使用browserify环境变量构建Gulp

hyb*_*id9 2 environment-variables browserify gulp

我想要包含一个环境变量或我的模块可以访问条件流的文件.

// contains env build specific data
// or value 'develop' || 'production'
var env = require('config');
Run Code Online (Sandbox Code Playgroud)

我知道我可以访问CL参数yargs很好,但我似乎无法找到一种方法来获取我的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
    }));
};
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 6

您可以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() {
  //...
});
Run Code Online (Sandbox Code Playgroud)

在你的模块中:

var config = require('./config.json');
if (config.env === 'production') {
  //...
}
Run Code Online (Sandbox Code Playgroud)

并在命令行上:

gulp --env=production
Run Code Online (Sandbox Code Playgroud)