【问题标题】:Using Grunt or Gulp with OpsWorks在 OpsWorks 中使用 Grunt 或 Gulp
【发布时间】:2014-11-27 17:06:18
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    不,你必须写一个食谱。

    甚至 OpsWorks 的 Node.js 层也通过配方安装 npm:

    opsworks-cookbooks / deploy / recipes / nodejs.rb(https://github.com/aws/opsworks-cookbooks/blob/master-chef-11.10/deploy/recipes/nodejs.rb#L20 for Chef 11.10)内容如下:

    opsworks_nodejs do
        deploy_data deploy
        app application
    end
    

    定义在:

    opsworks-cookbooks / deploy / definitions / opsworks_nodejs.rb(https://github.com/aws/opsworks-cookbooks/blob/master-chef-11.10/deploy/definitions/opsworks_nodejs.rb#L9 用于 Chef 11.10)并执行以下操作:

    node[:dependencies][:npms].each do |npm, version|
        execute "/usr/local/bin/npm install #{npm}" do
            cwd "#{deploy[:deploy_to]}/current"
        end
    end
    

    【讨论】:

      【解决方案2】:

      另一种方法是从 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)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-25
        • 2014-09-20
        • 2015-02-19
        • 2017-08-17
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多