No se puede ejecutar Gulp-less solo si el archivo ha cambiado
Pregunta
No puedo tragar saliva para no procesar todo, siempre.He intentado:
- actualizando mi versión de gulp
- usando trago cambiado
- usando gulp-newer
Funciona con gulp-ngmin, pero no con gulp-less.
Entonces esto procesa test.js solo si cambio 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));
});
Pero cada vez que ejecuto esta tarea, calcula menos
¿Que esta mal aquí?
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));
});
Solución
En realidad, la declaración de Nikita es falsa, funciona y es su propósito, solo asegúrese de que lo esté configurando correctamente.En mi caso tengo esto:
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') );
});
Mi gulp.src
apunta a la carpeta donde tengo mis principales archivos (archivos que importan otros archivos menos) y quiero que todos se compilen en la carpeta de destino.
En .pipe(changed())
, debe tener el mismo objetivo que tiene en .pipe(gulp.dest())
.
Puede especificar la extensión a comparar para hacerlo más rápido ({extension: '.css'}
) en pipe(changed())
.
Tal vez necesite revisar doble su generador de generación.En mi caso, simplemente colocé allí la carpeta raíz de todos mis archivos menos.Algunos de mis archivos menos están en paths: [path.join(__dirname, 'less', 'includes')]
y otros en src/less/globals
.Los archivos que quiero compilar están en src/less/common
.Así que usé src/less/pages
en src/less/pages/*.LESS
y gulp.src()
en menos src/less/
.
Otros consejos
Puedes usar trago-menos-cambiado paquete, verificará la menor jerarquía de compilación de archivos, considerando el @import
esta usado
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));
});