我不能每次都不处理每件事。我试过:
- 更新我的gulp版本 使用gulp-changed 使用gulp-newer
可以使用gulp-ngmin,但不能使用gulp-less
所以只有当我修改test.js:
时才会处理test.jsvar SRC = 'test.js';
var DEST = 'dist';
gulp.task('test', function () {
return gulp.src(SRC)
.pipe(changed(DEST))
// ngmin will only get the files that
// changed since the last time it was run
.pipe(ngmin())
.pipe(gulp.dest(DEST));
});
但是每次我运行这个任务时,它都会计算
怎么了?
var SRC = 'test.less';
var DEST = 'dist';
gulp.task('test', function () {
return gulp.src(SRC)
.pipe(changed(DEST))
.pipe(less({
paths: [path.join(__dirname, 'less', 'includes')]
}))
.pipe(gulp.dest(DEST));
});
实际上Nikita的说法是错误的,它确实有效,这就是它的目的,只是要确保你的设置正确。在我的例子中,我有这个:
var gulp = require('gulp');
var less = require('gulp-less');
var changed = require('gulp-changed');
gulp.task('less', function ()
{
gulp.src('./src/less/pages/*.less')
.pipe(changed( 'outputDir/css', {extension: '.css'}))
.pipe(less({
paths: [ './src/less/' ]
}))
.pipe(gulp.dest( 'outputDir/css') );
});
我的gulp.src
指向我的主要LESS文件(导入其他LESS文件的文件)的文件夹,我希望它们都编译到目标文件夹。
在.pipe(changed())
中,您必须具有与.pipe(gulp.dest())
中相同的目标。
您可以在pipe(changed())
中指定要比较的扩展以使其更快({extension: '.css'}
)。
也许你需要再次检查你的paths: [path.join(__dirname, 'less', 'includes')]
。在我的例子中,我只是把所有less文件的根文件夹放在那里。我的一些LESS文件在src/less/globals
和src/less/common
中。我要编译的文件在src/less/pages
中。所以我在gulp.src()
中使用src/less/pages/*.LESS
,在pipe(less({paths: []}))
中使用src/less/
。
您可以使用gulp-less-changed包,它将检查less文件编译层次结构,考虑到使用的@import
s
var gulp = require('gulp');
var lessChanged = require('gulp-less-changed');
var rename = require('rename');
var less = require('gulp-less');
var outputPat = "dest";
gulp.task('less', () => {
return gulp.src('src/*.less')
.pipe(lessChanged({
getOutputFileName: file => rename(file, { dirname: outputPath, extname: '.css' })
}))
.pipe(less())
.pipe(gulp.dest(outputPath));
});