通过节点脚本或命令行Browserify uglify?
在许多地方,似乎专业人士正在使用一个包含吞噬或咕噜声的node.js脚本来构build他们的项目。 我不明白的是,为什么脚本方法是可取的? 从命令行版本切换到脚本版本时,可以在其中添加其他软件包:即gulp-uglify,vinyl-source-stream和vinyl-buffer。 使用最小量的依赖关系的方法不是长期更安全吗? 举例来说,我正在使用下面的命令行方法:
browserify entry.js | uglifyjs > bundle.js
这依赖于browserify和uglifyjs,我没有gulp,gulp-uglifyjs等的额外的依赖关系,而且我不必担心与npm中直线uglifyjs相关的gulp-uglifyjs版本。 现在看到以下版本:
var browserify = require('browserify'); var gulp = require('gulp'); var uglify = require('gulp-uglify'); var source = require('vinyl-source-stream'); var buffer = require('vinyl-buffer'); gulp.task('browserify', function() { return browserify('./source/scripts/app.js') .bundle() .pipe(source('bundle.js')) // gives streaming vinyl file object .pipe(buffer()) // <----- convert from streaming to buffered vinyl file object .pipe(uglify()) // now gulp-uglify works .pipe(gulp.dest('./build/scripts')); });
看起来似乎更加复杂,但是出于什么原因,这将是一个更高效,更安全的方法来build立一个JavaScript项目? 谢谢。
不是。 命令行仍然是最安全的方式。 npm
允许默认构build这样的脚本。 人们为了Continuous Integration
而selectgulp
或grunt
或其他此类构build的工具。 Uglify
是你只需要一次用于生产目的的东西,但是说你想在每次你的文件改变时运行你的tests
,或者你想使用JSLint
。 那么,我知道很多这些插件提供了Continous Integration
支持,但并不是所有这些都支持。 Gulp
,`Grunt“和其他这样的构build工具随附解决scheme。
但是我看到越来越多的人从grunt
,, grunt
到基本的npm
,我完全支持这个运动。