2

jQuery など、多数のベンダーの JavaScript を含むプロジェクトがあります。これらのスクリプトを git サブモジュールとして含めています。ただし、私のビルド プロセスでは、そのスクリプトのリポジトリ全体ではなく、ビルドされたスクリプトが必要です。そこで、各スクリプトをビルドするための rake タスクを設定しようとしています (できればスクリプト独自の rakefile を使用)。次に、ビルドしたスクリプトをアセット ディレクトリにコピーします。

file "app/vendor/scriptname.js" do
    # Call the task that builds the script here
    sh "cp app/vendor/script-submodule/dist/scriptname.js app/vendor/"
end

desc "Make vendor scripts available for build"
task :vendor => "app/vendor/scriptname.js" do
end

Rakefile で使用する場合import 'app/vendor/scriptname/Rakefile'、スクリプトをビルドする rake タスクにアクセスできるはずですよね? どのように呼びますか?それとも、単に使用sh "cd app/vendor/script-submodule/ && rake dist"してそれを良いと呼ぶべきですか?

4

1 に答える 1

0

私は同様の問題に取り組んでおり、通常どおり rake タスクを呼び出すことで問題なく動作するようです。私の例は次のようになります。

# Rakefile
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
load 'engines/foo_engine/Rakefile'

MyApp::Application.load_tasks

次に、サブモジュールの Rakefile で:

# engines/foo_engine/Rakefile
Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each do |f|
  load f
end

サンプルのレーキ タスク:

# engines/foo_engine/lib/tasks/foo/bar/task.rake
namespace :foo do
  namespace :bar do
    desc "FooBar task"
    task :foo_bar => :environment do
      # perform task
    end
  end
end

次に、コマンド プロンプトから:

rake foo:bar:task
于 2013-09-20T14:50:24.843 に答える