Grunt为生产而构建?

时间:2017-03-10 19:48:26

标签: javascript node.js gruntjs

我有两个grunt配置,如下所示

grunt.registerTask('default', ['copy','jade','sass','browserify']);
grunt.registerTask('dev',['copy','jade','sass','browserify','watch']);

现在因为我正在使用grunt-contrib-watch,我需要在

下面添加脚本
script(src='//localhost:35729/livereload.js')

实时重新加载工作。如何根据生产环境选择添加脚本。有两个index.jade文件是一个选项,它让我通过这一部分,但有很多其他变量,如api root等依赖于构建环境。在这种情况下,为生产和开发环境构建的最佳实践是什么?

修改

只是为了确定。上面的index.jade只是一个例子。考虑js代码中的以下行

RestangularProvider.setBaseUrl("http://localhost:3000");

对于开发和生产,参数需要是分开的。拥有两份生产和开发代码副本是完全不合逻辑的。

1 个答案:

答案 0 :(得分:0)

我更喜欢使用--build

之类的参数

index.jade

if env.debug
  script(src='//localhost:35729/livereload.js')

Gruntfile

module.exports = function(grunt) {
  var DEBUG = grunt.option('build') === 'dev';

  // Configure Jade to conditionally render livereload.js
  // with DEBUG === true

  grunt.initConfig({
    pug: {
      options: {
        data: function() {
          return {
            env: {
              debug: DEBUG
            }
          };
        }
      }
    }
  });
}

一样使用它
grunt dev --build=dev

您可以通过Grunt

传递任何env特定数据
grunt --build=dev \
      --api-endpoint=/api/foo