题
每次我都不能不处理所有的事情。我试过了:
- 更新我的gulp版本
- 使用gulp-changed
- 使用gulp-更新
它适用于gulp-ngmin,但不适用于gulp-less
所以这个过程测试。js只有当我改变测试。js的:
var 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));
});
解决方案
实际上尼基塔的陈述是错误的,它确实有效,它是它的目的,只要确保你正确地设置它。在我的情况下,我有这个:
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())
.
您可以指定要比较的扩展名以使其更快({extension: '.css'}
)在 pipe(changed())
.
也许你需要仔细检查你的 paths: [path.join(__dirname, 'less', 'includes')]
.在我的情况下,我只是把我所有的less文件的根文件夹放在那里。我的一些LESS文件在 src/less/globals
和其他人在 src/less/common
.我要编译的文件在 src/less/pages
.所以我用了 src/less/pages/*.LESS
在 gulp.src()
和 src/less/
少一点 pipe(less({paths: []}))
.
其他提示
您可以使用 gulp-less-changed碌录潞陆 包,它将检查less文件编译层次结构,考虑到 @import
用过的
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));
});
不隶属于 StackOverflow