只有在文件发生变化时才能运行gulp-less

时间:2014-06-03 00:47:07

标签: gulp gulp-less

每次都无法处理所有事情,我无法满足。我试过了:

  1. 更新我的gulp版本
  2. 使用gulp-changed
  3. 使用gulp-newer
  4. 它适用于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));
    });
    

2 个答案:

答案 0 :(得分:5)

实际上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())中相同的目标。

您可以指定要进行比较的扩展程序,以便在{extension: '.css'}中加快速度(pipe(changed()))。

也许您需要仔细检查paths: [path.join(__dirname, 'less', 'includes')]。就我而言,我只是放置了所有较少文件的根文件夹。我的一些LESS文件位于src/less/globals,其他位于src/less/common。我要编译的文件位于src/less/pages。所以我在src/less/pages/*.LESS中使用了gulp.src(),在src/less/中使用了pipe(less({paths: []}))

答案 1 :(得分:1)

您可以使用 gulp-less-changed 包,它将检查较少的文件编译层次结构,考虑使用的internal

@import