2017-03-28 5 views
0

Ich habe einen großen Schluck Uhr Befehl auf meinem SASS (SCSS) Dateien in vielen Verzeichnissen (jedes Verzeichnis ist ein eigenständiges Projekt)Gulp SASS Befehl Zielpfad mit Wildcard beobachten

var gulp = require('gulp'); 
var sass = require('gulp-sass'); 

gulp.task('sass', function(){ 
    gulp.src('**/Masters/**/assets/scss/*.scss') 
    .pipe(sass({ 
    outputStyle: 'compressed' 
    }).on('error', sass.logError)) 
    .pipe(gulp.dest('**/Masters/**/assets/css')); 
}) 

gulp.task('sass:watch', function() { 
    gulp.watch('**/Masters/**/assets/scss/*.scss', ['sass']); 
}); 

ich mit Angabe des Zielpfades steckte dynamisch. Ich möchte 1 Watch-Befehl für das übergeordnete Verzeichnis ausführen und dann jedes untergeordnete Verzeichnis nach Änderungen beobachten. Wenn es Änderungen gibt, kompiliere die CSS-Datei und verschiebe die CSS-Datei in das css-Verzeichnis in jedem Projektordner.

Der Code, den ich jetzt habe, beobachtet jedes Verzeichnis wie erforderlich, aber das Ziel funktioniert nicht wie erwartet, der Befehl erstellt ein Verzeichnis mit dem Namen ** statt die ** als Platzhalter zu verwenden.

Kann jemand den Zielpfad dynamisch angeben?

+0

'move css-datei in css-verzeichnis' - wäre das wie' **/master/**/assets/css/'? –

Antwort

1

Sie müssen base in gulp.src und dest als das aktuelle Verzeichnis festlegen. Dies verwendet das Eingabeverzeichnis als Ausgabe.

Verwenden Sie dann gulp-rename, um den Verzeichnispfad ../css hinzuzufügen. Dadurch wird die Ausgabe an ein css Verzeichnis geleitet, das ein Geschwister zum Eingabeverzeichnis ist.

gulp.task('sass', function(){ 
    gulp.src('**/Masters/**/assets/scss/*.scss', {base: "./"}) 
    .pipe(sass({ 
    outputStyle: 'compressed' 
    }).on('error', sass.logError)) 

    .pipe(rename(function (path) { 
    path.dirname += "/../css"; 
    })) 

    .pipe(gulp.dest('./')); 
}) 
+0

Vielen Dank, will genau ich wollte :) – iamleeadamson