我想在Amazon OpsWorks上部署应用程序时触发Grunt或Gulp。 默认情况下,OpsWorks的Node.js层运行npm install,但不是gulp,我不知道如何编写自定义配方:还有其他解决方案吗?
答案 0 :(得分:2)
不,你必须写一个食谱。
甚至OpsWorks的Node.js层也通过配方安装npm:
opsworks-cookbooks / deploy / recipes / nodejs.rb(厨师11.10的https://github.com/aws/opsworks-cookbooks/blob/master-chef-11.10/deploy/recipes/nodejs.rb#L20),内容如下:
opsworks_nodejs do
deploy_data deploy
app application
end
,定义于:
opsworks-cookbooks / deploy / definitions / opsworks_nodejs.rb(厨师11.10的https://github.com/aws/opsworks-cookbooks/blob/master-chef-11.10/deploy/definitions/opsworks_nodejs.rb#L9)并确实:
node[:dependencies][:npms].each do |npm, version|
execute "/usr/local/bin/npm install #{npm}" do
cwd "#{deploy[:deploy_to]}/current"
end
end
答案 1 :(得分:0)
另一种方法是从OpsWorks期望的文件中生成Gulp,即server.js
:
var child_process = require( "child_process" );
child_process.spawn( "./node_modules/gulp/bin/gulp.js",
[ "main" ].concat( process.argv.slice( 2 ) ), {
stdio: "inherit"
}
);
然后从Gulp发出真实的主文件(例如index.js
)。