【问题标题】:Removing process.env.NODE_ENV with browserify/envify?使用 browserify/envify 删除 process.env.NODE_ENV?
【发布时间】:2015-05-10 11:26:34
【问题描述】:

所以我通过 NPM 和 Browserify 使用 ReactJS,但是我试图弄清楚如何像自述文件所说的那样在生产模式下构建它,但它似乎不起作用。我有这个代码来设置 browserify:

var browserify = require('browserify');
var envify = require('envify/custom');
var debug = false;

...

var libraries = browserify({
  debug: debug
}).transform(envify({
  _: 'purge',
  NODE_ENV: debug ? 'development' : 'production'
}));

gulpConfig.tasks.browserify.transformers.forEach(function(transform) {
  libraries.transform(transform);
});

gulpConfig.tasks.browserify.libraries.forEach(function(metaData) {
  if(metaData.path) {
    libraries.require(metaData.path, {
      expose: metaData.name
    });
  } else {
    libraries.require(metaData.name);
  }
});

var libraryStream = libraries.bundle()
.on('error', function(err){
  var message;

  if(err.description)
    message = 'browserify error: ' + err.description + ' when parsing ' + err.fileName + ' | Line ' + err.lineNumber + ', Column ' + err.column;
  else {
    message = err.message;
  }

  gutil.log(gutil.colors.red(message));

  this.emit('end');
})
.pipe(source('libraries.js'));

libraryStream.pipe(gulp.dest(gulpConfig.buildPath));

但是,当我查看编译后的代码时,我看到了一堆这样的:

if ("production" !== process.env.NODE_ENV) {

虽然它应该编译为:

if ("production" !== "production") {

然后可以通过 UglifyJS2 等工具自动删除。我是否设置了 Envify 错误?什么的。

【问题讨论】:

  • 您似乎没有为 browserify 提供代码的入口点 - 它应该是 browserify() 的第一个参数或您传递的选项对象中的 entries 属性。
  • 我只添加了我认为相关的代码,但我已经更新了完整的 browserify 代码来构建我的 library.js 文件。请注意,捆绑包没有入口点,因为它只包含核心库、不经常更改的文件,因此我使用 require() 手动添加它们。

标签: javascript node.js reactjs browserify


【解决方案1】:

React 已经自动配置了envify。它将获取构建脚本本身运行的环境。您通常会在运行实际构建脚本之前设置NODE_ENV,例如

NODE_ENV=production gulp build

或者更好的是,您可以将构建步骤添加到您的 package.json 中的 "scripts" 块中,这样您就可以这样做了

npm run --production build

【讨论】:

  • 如果你有单独的生产和开发任务,你也可以在你的 gulp 脚本中设置process.env.NODE_ENV = 'production'。这主要是您个人的喜好。
【解决方案2】:

直接改成

var libraries = browserify({
  debug: debug
}).transform(envify({
  _: 'purge',
  NODE_ENV: debug ? 'development' : 'production'
}), {
  global: true
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2023-02-26
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多