Can';仅当文件已更改时,才能运行gulp less

Can';仅当文件已更改时,才能运行gulp less,gulp,gulp-less,Gulp,Gulp Less,我不能每次都不处理每一件事。我试过: 更新我的gulp版本 改用大口 大口喝 它适用于gulp ngmin,但不适用于gulp less 因此,只有在我更改test.js时,才会处理test.js: var SRC = 'test.js'; var DEST = 'dist'; gulp.task('test', function () { return gulp.src(SRC) .pipe(changed(DEST)) // ngmin will o

我不能每次都不处理每一件事。我试过:

  • 更新我的gulp版本
  • 改用大口
  • 大口喝
  • 它适用于gulp ngmin,但不适用于gulp less

    因此,只有在我更改test.js时,才会处理test.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') );
    });
    
    My
    gulp.src
    指向我的主LESS文件(导入其他LESS文件的文件)所在的文件夹,我希望它们都编译到目标文件夹中

    .pipe(changed())
    中,您必须具有与
    .pipe(gulp.dest())
    中相同的目标

    您可以在
    管道(changed())
    中指定要比较的扩展名,使其更快(
    {extension:'.css'}


    也许您需要仔细检查
    路径:[path.join(\uu dirname,'less','includes')]
    。在我的例子中,我只是将所有less文件的根文件夹放在那里。我的一些LESS文件位于
    src/LESS/globals
    中,其他文件位于
    src/LESS/common
    中。我要编译的文件位于
    src/less/pages
    中。因此我在
    gulp.src()
    中使用了
    src/less/pages/*.less
    ,在less
    管道(less({path:[]))中使用了

    您可以使用gulp less changed包,考虑到使用的
    @import
    ,它将检查less文件编译层次结构

    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));
    });
    

    你提到了“全球”和“普通”。如果导入发生更改,这会自动知道如何编译顶级页面吗?从文件来看,它不。。。但万一你找到了办法?