Gulp 使用 browserify 环境变量构建

Gulp build with browserify environment variable

我希望包含我的模块可以为条件流访问的环境变量或文件。

// contains env build specific data
// or value 'develop' || 'production'
var env = require('config');

我知道我可以使用 yargs 访问 CL 参数,这很棒,但我似乎无法找到一种方法将参数放入我的 browserify 构建中。

var bundleStream = {
  cache: {},
  packageCache: {},
  fullPaths: false,
  entries: [filename],
  extensions: config.extensions,
  debug: config.debug,
  paths: ['./node_modules', './app/js/'],
  require: ['jquery', 'lodash']
};

var bundle = function() {
  bundleLogger.start(filename);
  return bundleStream
    .bundle()
    .on('error', handleErrors)
    .pipe(source(filename.replace('-app', '-bundle')))
    .pipe(gulp.dest(process.cwd()))
    .on('end', reportFinished)
    .pipe(browserSync.reload({
      stream: true
    }));
};

您可以动态创建一个 config.json 文件,然后在您的模块中要求它:

var fs = require('fs');
var gutil = require('gulp-utils');

gulp.task('create-config', function(cb) {
  fs.writeFile('config.json', JSON.stringify({
    env: gutil.env.env,
    tacos: 'delicious'
  }), cb);
});

gulp.task('browserify', ['create-config'], function() {
  //...
});

在您的模块中:

var config = require('./config.json');
if (config.env === 'production') {
  //...
}

并且在命令行上:

gulp --env=production