如何将环境变量设置为gulp任务?

cha*_*m15 59 environment-variables node.js gulp

我不想NODE_ENV='production' gulp每次运行gulp来设置环境变量时输入额外的参数.

我宁愿通过任务从gulp中设置环境变量.

实现这一目标的好方法是什么?

Eli*_*ant 128

gulp.task('set-dev-node-env', function() {
    return process.env.NODE_ENV = 'development';
});

gulp.task('set-prod-node-env', function() {
    return process.env.NODE_ENV = 'production';
});
Run Code Online (Sandbox Code Playgroud)

使用它像:

gulp.task('build_for_prod', ['set-prod-node-env'], function() {
    // maybe here manipulate config object  
    config.paths.src.scripts = config.paths.deploy.scripts;
    runSequence(
        'build',
        's3'
    );
});
Run Code Online (Sandbox Code Playgroud)

  • 正确答案显示如何在没有过多依赖性的情况下完成简单任务 (11认同)
  • 有人可以解释关于检测环境变量的“ config.paths.src.scripts = config.paths.deploy.scripts;”行吗? (2认同)

tal*_*kol 16

试试gulp-env

有关如何在运行nodemon任务之前设置一些环境变量的快速示例:

// gulpfile.js

var gulp = require('gulp');
var nodemon = require('nodemon');
var env = require('gulp-env');

gulp.task('nodemon', function() {
    // nodemon server (just an example task)
});

gulp.task('set-env', function () {
  env({
    vars: {
      MONGO_URI: "mongodb://localhost:27017/testdb-for-british-eyes-only",
      PORT: 9001
    }
  })
});

gulp.task('default', ['set-env', 'nodemon'])
Run Code Online (Sandbox Code Playgroud)


rzr*_*rzr 16

您也可以将其定义为您的脚本 package.json

{
  "name": "myapp",
  "scripts": {
    "gulp": "NODE_ENV='development' gulp",
    "gulp-build": "NODE_ENV='production' gulp"
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

并运行它npm run gulp-build.这有一些好处

  • 您可以轻松定义参数,而不是每次都输入
  • 不需要全局gulp安装(对于其他工具,例如webpack)
  • 您可以使用不同的环境变量和(或)参数定义多个变体而无需更改gulpfile(如上所示 - 分别用于开发和生产的gulp和gulp-build)