我有一种情况,我目前正在丑化所有 JavaScript 文件,即使它们已经被压缩,这显然不是一个好主意。
我各自的任务是:
gulp.task('uglify', ['scripts'], function() {
return gulp.src('./js/scripts.js')
.pipe(rename({suffix: '.min'}))
.pipe(uglify({
mangle: false
}))
.pipe(gulp.dest('./js'));
});
scripts.js
是一个先前连接在一起的文件,但显然如果其中有一些已经压缩的文件,那么它们将再次变得丑陋,这是我们试图避免的。
因此,我进行了搜索,并一直在考虑再次处理所有文件,而不是处理未缩小的(仅包含连接文件的文件)版本,以便我可以更好地控制每个文件。
我研究过使用gulp-ignore
并且似乎可能是我想要的gulp-if
;gulp-if
但是我不能 100% 确定流在 Gulp 中是如何运行的——当你传递一个文件列表时,它是循环遍历每个文件的任务还是只运行一次?
我很好奇,因为如果它针对每个文件运行,我正在做这样的事情:
gulp.task('uglify', ['scripts'], function() {
return gulp.src(js_scripts)
.pipe(gulpif(condition, uglify({mangle: false})))
.pipe(concat('scripts.min.js'))
.pipe(gulp.dest('./js'));
});
condition
检查文件是否在文件名中的东西在哪里.min
,如果有,不要丑化它。
所以我的问题是 - 如果它循环并且我可以在每个文件上运行条件,我该如何对文件名运行测试,如果它不循环,那么我怎样才能实现我在这里尝试做的事情?我是否将被迫创建两个单独的任务,一个用于未缩小的任务,一个用于.min
文件,然后最后将它们连接在一起?