每次我都不能不处理所有的事情。我试过了:

  1. 更新我的gulp版本
  2. 使用gulp-changed
  3. 使用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/*.LESSgulp.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));
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top