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

时间:2015-05-23 14:30:10

标签: javascript node.js gulp browserify uglifyjs

在许多地方,专业人士似乎正在使用涉及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项目?感谢。

1 个答案:

答案 0 :(得分:2)

不是。命令行仍然是最安全的方式。并且npm默认情况下会构建此类脚本。人们使用gulpgruntContinuous Integration的其他此类构建工具。 Uglify只是出于制作目的而只需要一次,但是您希望每次更改一个文件时都要运行tests,或者想要使用JSLint。好吧,我知道其中许多插件都提供Continous Integration支持,但并非所有插件都支持Gulpgulp,`Grunt```和其他类似的构建工具都带有开箱即用的解决方案。

但是我看到越来越多的人从gruntnpm转到基本platforms,我完全支持这一运动。