2016-05-02 6 views
1

Ich habe diese Aufgabe. Zuerst mache ich eine Sache mit einem src. Dann mache ich noch etwas mit einem anderen src. Wie verschmelze ich sie zu einer einzigen Pipeline?Gulp change src

Antwort

3

Sie verschmelzen sie nicht und Sie machen sie nicht zu einer einzigen Pipeline. Was Sie hier haben, sind zwei abhängige Aufgaben. Sie sollten sie als solche behandeln.

Sie möchten, dass Ihre zweite Pipeline erst nach der ersten ausgeführt wird, sodass alle Ihre .css Dateien in assests/css generiert wurden. So können Sie jede Pipeline in eine separate Aufgabe gestellt und die zweite machen, hängt von der ersten:

gulp.task('generate-css', function() { 
    return gulp.src('site/patterns/site/site.scss') 
    .pipe(sass().on('error', sass.logError)) 
    .pipe(autoprefixer()) 
    .pipe(rename('index.css')) 
    .pipe(gulp.dest('assets/css')) 
    .pipe(minifyCss()) 
    .pipe(rev()) 
    .pipe(gulp.dest('assets/css')) 
    .pipe(rev.manifest()) 
    .pipe(revDel({ dest: 'assets/css' })) 
    .pipe(gulp.dest('assets/css')) 
    .pipe(notify("CSS generated!")); 
}); 

gulp.task('css', ['generate-css'], function() { 
    return gulp.src(['assets/css/index-*.css'], {read: false}) 
    .pipe(revOutdated()) // leave 2 recent assets (default value) 
    .pipe(cleaner()); 
}); 
0

Es stimmt, dass einzelne Aufgaben sollten nicht in eine einzige Pipeline verschmolzen oder gedreht werden, aber jede noch so kleine Mikro-Subtask in einen separaten Hebe Aufgabe, nur um sicherzustellen, dass es in der richtigen Reihenfolge ausgeführt wird, kann schnell auf gulpfile.js aufgebläht werden. Für komplizierte Build-Umgebungen ist es einfach, so viele Aufgaben und Abhängigkeiten zu haben, dass niemand herausfinden kann, was passiert.

Um eine Subtask seriell am Ende einer Aufgabe auszuführen verwenden gulp-ignore den src Vinylstrom von gulp-add-src gefolgt auszuräumen einen neuen Strom effektiv zu schaffen.

package.json

"devDependencies": { 
    "gulp-add-src": "~0.2", 
    "gulp-ignore": "~2.0", 

gulpfile.js

var addsrc = require('gulp-add-src'); 
var ignore = require('gulp-ignore'); 
... 
gulp.task('generate-css', function() { 
    return gulp.src('site/patterns/site/site.scss') 
     .pipe(sass().on('error', sass.logError)) 
     ... 
     .pipe(ignore.exclude(true)) //clear out src vinyl stream 
     .pipe(addsrc.prepend('assets/css/index-*.css')) //new stream 
     .pipe(revOutdated()) 
     .pipe(cleaner()); 
    }); 

Dieser Ansatz macht die Aufgabe mehr Zusammenhalt, aber im Zweifelsfall mit getrennten Aufgaben gehen.