通过节点脚本或命令行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而selectgulpgrunt或其他此类构build的工具。 Uglify是你只需要一次用于生产目的的东西,但是说你想在每次你的文件改变时运行你的tests ,或者你想使用JSLint 。 那么,我知道很多这些插件提供了Continous Integration支持,但并不是所有这些都支持。 Gulp ,`Grunt“和其他这样的构build工具随附解决scheme。

但是我看到越来越多的人从grunt ,, grunt到基本的npm ,我完全支持这个运动。

Interesting Posts