如果要有条件地编译更少的文件,如何使用gulp?
我不能正常工作 如果工作正常,则无需吞咽:如果要有条件地编译更少的文件,如何使用gulp?,gulp,gulp-if,Gulp,Gulp If,我不能正常工作 如果工作正常,则无需吞咽: gulp.task('css', function() { return gulp.src([ // 'bower_components/bootstrap/dist/css/bootstrap.css', 'app/stylesheets/main.less', ]) .pipe(less({ strictMath: true, strictUnits: true,
gulp.task('css', function() {
return gulp.src([
// 'bower_components/bootstrap/dist/css/bootstrap.css',
'app/stylesheets/main.less',
])
.pipe(less({
strictMath: true,
strictUnits: true,
}))
.pipe(concat('all.css', {newLine: '\n'}))
.pipe(prefixer('> 1%'))
.pipe(minifyCss())
.pipe(gulp.dest('public/css'));
});
但是,只要我将gulpif
添加到混合中,gulpif
管道返回主流时不会返回任何内容:
gulp.task('css', function() {
return gulp.src([
'bower_components/bootstrap/dist/css/bootstrap.css',
'app/stylesheets/main.less',
])
.pipe(gulpif(/\.less$/,less({
strictMath: true,
strictUnits: true,
})))
.pipe(concat('all.css', {newLine: '\n'}))
.pipe(prefixer('> 1%'))
.pipe(minifyCss())
.pipe(gulp.dest('public/css'));
});
为什么呢?我做错了什么?如果我将一些日志添加到
gulp If
源代码中,我可以看到该条件正在通过。我认为您可能需要使用gulp过滤器
:
这将创建一个经过过滤的流,而restore()
将还原该流gulpIf
用于有条件地处理整个流,而不仅仅是匹配文件
gulp.src('src/**/*.js', function () {
.pipe(gulpIf(isProduction, concat('all.js')))
.pipe(gulp.dest('dest/')
});
这听起来像是
中的一个bug,如果。尝试将gulp if
升级到最新版本,如果不起作用,请在上发布问题。我将对gulp filter
进行一次尝试,但我仍然不明白gulp if
会起什么作用。我以前见过,你说得对gulpif
使用应处理正则表达式的gulp match
。这也应该是有效的:.pipe(gulpIf('***.less')、less(lessOptions))
gulpIf和gulp过滤器满足不同的需求。gulp filter从流中删除与过滤器匹配的内容。gulp if是一条三元流,将东西传递给if,如果匹配,则传递给else,然后将所有东西传递给下游。你在说什么?那gulpif
可以使用函数,但不能使用正则表达式?真的吗?因为接受正则表达式的文档。
gulp.src('src/**/*.js', function () {
.pipe(gulpIf(isProduction, concat('all.js')))
.pipe(gulp.dest('dest/')
});
gulp.task('css', function() {
var condition = function(file) {
if (file.extname == '.less') return true;
};
return gulp.src([
'bower_components/bootstrap/dist/css/bootstrap.css',
'app/stylesheets/main.less',
])
.pipe(gulpif(condition, less({
strictMath: true,
strictUnits: true,
})))
.pipe(concat('all.css', {newLine: '\n'}))
.pipe(prefixer('> 1%'))
.pipe(minifyCss())
.pipe(gulp.dest('public/css'));
});