在OpsWorks中使用Grunt或Gulp

时间:2014-10-02 16:38:09

标签: amazon-web-services automation gruntjs gulp aws-opsworks

我想在Amazon OpsWorks上部署应用程序时触发Grunt或Gulp。 默认情况下,OpsWorks的Node.js层运行npm install,但不是gulp,我不知道如何编写自定义配方:还有其他解决方案吗?

2 个答案:

答案 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)。