Javascript Browserify&x2B;吞咽变慢
我们一直在使用gulp和browserify在js文件更改时创建项目的构建。随着项目的发展,这个过程变得异常缓慢,从200毫秒到5秒。该项目有69个目录、173个文件,最大深度为4个文件夹。我们正在应用一些变换。这是我们的构建代码Javascript Browserify&x2B;吞咽变慢,javascript,gulp,browserify,Javascript,Gulp,Browserify,我们一直在使用gulp和browserify在js文件更改时创建项目的构建。随着项目的发展,这个过程变得异常缓慢,从200毫秒到5秒。该项目有69个目录、173个文件,最大深度为4个文件夹。我们正在应用一些变换。这是我们的构建代码 var buildJS = function (entryPoint, name, cb) { var browserify = require('browserify'); var uglify = require('gulp-uglify');
var buildJS = function (entryPoint, name, cb) {
var browserify = require('browserify');
var uglify = require('gulp-uglify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var reactify = require('reactify');
var literalify = require('literalify');
var brfs = require('brfs');
browserify()
.require(entryPoint + '/' + name + '.jsx')
.transform({
global: true
}, reactify)
.transform({
global: true
}, brfs)
.transform({
global: true
}, literalify.configure(literalifyConfig))
.external(config.libs)
.bundle({
debug: config.DEV,
//detectGlobals : false
})
.on('error', handleError)
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(gulpIf(!config.DEV, uglify()))
.pipe(gulp.dest(config.buildPath + '/' + name))
.on('finish', cb)
};
这只是基于项目规模的正常行为吗?还是我们做错了什么?那是因为
browserify
总是重新编译所有内容。如果希望获得良好的性能,则应该使用增量构建。
我已经开发了一个gulp插件,正是为了这个目的:。项目文件的实际“大小”是多少。这可能会导致大量并发I/O,具体取决于您调用buildJS的方式。您是否有多个构建过程?或者这是唯一的一个?我想说的是,你真的需要做所有这些“为了发展”。也许你可以减轻一些痛苦,减少一些任务(将此构建过程仅用于测试/部署)。本文建议使用watchify和browserify进行增量构建:还有一个简单的方法:@livepo单个文件非常小,大约300行。此构建确实单独运行(每当我们更新js文件时)。这个构建过程是必需的,因为代码都是用JSX和节点样式编写的,所以不适合发送给客户机。