2014-09-11 6 views
6

Ich habe eine Reihe von Stylus-Dateien in './styles/stylus/**.styl' und eine Reihe von CSS-Dateien in './styles/css/**.css'.Gulp: Kompilieren Stylus und concat mit reinem CSS

Wie verwende ich Gulp, um die Stylus-Dateien zu kompilieren, das Ergebnis mit allen CSS-Dateien zu verbinden und es an './styles/out.css' auszugeben?

Antwort

8

Sie gulp-filter wie verwenden:

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

Sie sollten in der Lage sein, zwei getrennte Ströme von Dateien zu erstellen und kombiniere sie mit 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

Dies ist die beste Lösung, wenn Sie viele Legacy-CSS-Stylesheets erstellen müssen und die Verwendung von '@require legacy/*' nicht funktionieren wird, da der Globbing-Import nur für ** .styl ** -Quelldateien funktioniert. –

3

Innerhalb Stylus-Dateien, können Sie einfach @require CSS-Dateien:

@require 'something.css' 

Die Es gibt keine Notwendigkeit für Verkettung oder andere Komplexität in Gulp, und Ihre Dateiladeordnung wird explizit in den STYL-Dateien festgelegt.

+0

Dies sollte befolgt werden. In einigen Fällen benötigen wir möglicherweise eine Lösung. – Yash

+0

Kannst du bitte etwas näher darauf eingehen? Mir ist nicht klar, wie das das Problem löst ...? http://StackOverflow.com/users/223225/geoffrey-booth – MaxRocket

+0

Wenn das Endergebnis eine CSS-Datei ist, die sowohl die Quelldateien .css als auch .styl enthält, können Sie Ihre Stylus-Dateien verwenden, um beide zu umfassen. Auf diese Weise gibt es nur einen Build-Pfad: Kompilieren Sie Stylus, ohne Dateien später zusammenfügen/zusammenführen zu müssen. –

0

Ich habe gerade eine großartige Lösung für dieses Problem: @require für jede der anderen .styl Dateien in Ihrer main.styl-Datei verwenden, und sieht nur gulp.src (‚src/css/main.styl‘)