2014-09-11 14 views
6

Ho un mucchio di file Stylus in './styles/stylus/**.styl' e un mucchio di file CSS in './styles/css/**.css'.Gulp: compile Stylus e concat con puro CSS

Come utilizzare Gulp per compilare i file Stylus, concatenare il risultato con tutti i file CSS e inviarlo a './styles/out.css'?

risposta

8

È possibile utilizzare gulp-filter come:

var gulp = require('gulp'); 
var stylus = require('gulp-stylus'); 
var concat = require('gulp-concat'); 
var Filter = require('gulp-filter'); 

gulp.task('css', function() { 

    var filter = Filter('**/*.styl', { restore: true }); 

    return gulp.src([ 
      './styles/stylus/**.styl', 
      './styles/css/**.css' 
     ]) 
     .pipe(filter) 
     .pipe(stylus()) 
     .pipe(filter.restore) 
     .pipe(concat('out.css')) 
     .pipe(gulp.dest('./styles')); 
}); 
3

Dovreste essere in grado di creare due flussi separati di file e li fondono con event-stream:

var es = require('event-stream'); 

gulp.task('styles', function() { 
    var stylusStream = gulp.src('./styles/stylus/**.styl') 
    .pipe(stylus()); 

    return es.merge(stylusStream, gulp.src('./styles/css/**.css')) 
    .pipe(concat('out.css')) 
    .pipe(gulp.dest('./styles')); 
}); 
+0

Questa è la soluzione migliore quando è necessario concatenare molti fogli di stile css legacy e semplicemente usando '@require legacy/*' non funzionerà poiché l'importazione globbing funziona solo con i file di origine **. Styl **. –

3

Entro i file stilo, si può solo @require File CSS:

@require 'something.css' 

Il n non c'è bisogno di concatenazione o di qualsiasi altra complessità in Gulp e l'ordine di caricamento dei file è impostato esplicitamente all'interno dei file .styl.

+0

Questo dovrebbe essere seguito. In alcuni casi potremmo aver bisogno di una soluzione superiore. – Yash

+0

Puoi espandermi un po '? Non sono chiaro come questo risolva il problema ...? http://stackoverflow.com/users/223225/geoffrey-booth – MaxRocket

+0

Se il risultato finale è un file CSS che include sia i file di origine .css che .styl, è possibile utilizzare entrambi i file Stylus. In questo modo c'è solo un percorso di costruzione: compilare Stylus, senza dover concatenare/unire i file in un secondo momento. –

0

Ho appena trovato una grande soluzione a questo: utilizzare @require per ciascuno degli altri file .styl nel file main.styl, e basta guardare gulp.src ('src/css/main.styl')