我有一个项目,包括一些销售的javascripts,例如jQuery的。我将这些脚本包含为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"
并称之为好吗?
答案 0 :(得分: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