将环境变量从grunt传递到文件

时间:2018-09-17 11:23:17

标签: node.js rest gruntjs environment-variables

根据环境,我想将js文件中的HTTP请求运行到URL或其他URL。

例如,我有这样的东西:

我想要执行的是grunt文件并指定env,因此js文件应读取该选项,然后向网址或其他网址发出请求。

例如:

grunt default --env=prod

我怎么对js文件说URL是dev,preprd或prod一个?

1 个答案:

答案 0 :(得分:1)

Node.js API公开了process对象,该对象将环境变量存储在其env属性中。运行时之前设置的每个环境变量都将位于process.env内部。

例如:

$ NODE_ENV=production node -e 'console.log(process.env.NODE_ENV)'

将输出:

production

在特定情况下,可以在Gruntfile.js中使用process.env,然后在运行grunt时可以像上面的示例一样使用它。

带有环境变量的示例Gruntfile.js

改编自Grunt.js website

module.exports = function(grunt) {

  grunt.initConfig({
    jshint: {
      files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
      options: {
        globals: {
          jQuery: true
        }
      }
    },
    watch: {
      files: ['<%= jshint.files %>'],
      tasks: process.env.PRODUCTION ? [] : ['jshint']
    }
  });

  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', ['jshint']);
};

然后,如果您运行

$ grunt watch # PRODUCTION environment variable is not set

它将在观看jshint时执行files任务。另一方面,如果您设置PRODUCTION变量并运行相同的命令

$ PRODUCTION=true grunt watch

观看files时它不会执行任何任务。