Browserify uglify 通过节点脚本或命令行?

Browserify uglify via node script or command line?

似乎在许多地方,专业人士正在使用涉及 gulp 或 grunt 的 node.js 脚本来构建他们的项目。但我不明白的是,为什么脚本方法更可取?当从命令行版本切换到脚本版本时,您将添加其他包:即 gulp-uglify、vinyl-source-stream 和 vinyl-buffer。从长远来看,使用依赖性最少的方法不是更安全吗?以我当前使用的以下命令行方法为例:

browserify entry.js | uglifyjs > bundle.js

这依赖于browserify和uglifyjs,我没有gulp、gulp-uglifyjs等额外的依赖......我不用担心gulp-uglifyjs 的版本相对于 npm 上的直接 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'));
});

这看起来要复杂得多,但是为什么这会成为构建 javascript 项目的更高效、更安全的方法?谢谢

不是。命令行仍然是最安全的方式。 npm 默认情况下允许构建这样的脚本。人们为 gulpgrunt 或其他类似的内置工具寻找 Continuous IntegrationUglify 是您只需要一次用于生产目的的东西,但是假设您想要 运行 您的 tests 每次您的文件之一更改时,或者您想使用 JSLint .好吧,我知道其中许多插件都提供 Continous Integration 支持,但并非所有插件都提供。 Gulp、`G运行t``` 和其他此类构建工具随附开箱即用的解决方案。

但我看到越来越多的人从 gulpgrunt 转向基本 npm,我完全支持这一运动。