【发布时间】: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