【问题标题】:Can I pass parameters from Grunt to Javascript?我可以将参数从 Grunt 传递到 Javascript 吗?
【发布时间】:2015-06-23 02:42:29
【问题描述】:

我有一个由 Grunt 构建的 HTML5+JS 代码。我目前正在设置开发和生产环境。

有没有办法将参数从 Grunt 传递给 JS 代码?这样我就可以传递开发/生产服务器的 IP,这取决于我正在构建的服务器。

顺便说一句,我注意到 Grunt 选项允许定义 Grunt 参数 (http://gruntjs.com/api/grunt.option),但是如何在 JS 代码中使用它们?

如果有更好的做法来为一个 JS 项目设置两个环境,请告诉我。

谢谢!

【问题讨论】:

标签: javascript html deployment gruntjs environment-variables


【解决方案1】:

有几个插件可以帮助您。
我们以includereplace 为例。
npm install grunt-include-replace --save-dev

您可以在 Gruntfile 中定义要替换的变量。
然后链接到您要在其上运行任务的文件。
如果您想通过 CLI 添加值,可以按照您的建议使用 grunt.option API。

Gruntfile.js

module.exports = function(grunt) {

  var ip = grunt.option('ip') || '127.0.0.1';

  grunt.initConfig({
    includereplace: {
      dev: {
        options: {
          globals: {
            ip: ip
          },
        },
        src: 'file.js',
        dest: 'dest/'
      },
      prod: {
        options: {
          globals: {
            ip: ip
          },
        },
        src: 'file.js',
        dest: 'dest/'
      }      
    }
  });

  grunt.loadNpmTasks('grunt-include-replace');

  grunt.registerTask('dev', ['includereplace:dev']);
  grunt.registerTask('prod', ['includereplace:prod']);

};

文件.js

var ip = '@@ip';

我将 dev 和 prod 配置分开,以便您可以向每个环境添加不同的变量。

运行 grunt prod --ip=XXX.XXX.XXX.XXX 将在 dest 文件夹中生成一个新文件,其中包含新值。

如果您不喜欢 @@ 占位符约定,您可以通过 Custom Options API 轻松更改它。

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2011-12-20
    • 2015-12-29
    相关资源
    最近更新 更多