2014-09-11 4 views
6

나는 './styles/stylus/**.styl'에 스타일러스 파일을 많이 넣었고 './styles/css/**.css'에 CSS 파일을 많이 넣었습니다.Gulp : 스타일러스를 컴파일하고 순수 CSS로 연결

Gulp를 사용하여 스타일러스 파일을 컴파일하고 결과를 모든 CSS 파일과 연결하여 './styles/out.css'으로 출력하려면 어떻게해야합니까?

답변

8

당신이 좋아하는 gulp-filter 사용할 수 있습니다 : 당신의 스타일러스 파일 내에서

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

당신은 파일의 두 개의 별도의 스트림을 생성 할 수 및 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

globing 가져 오기가 **. styl ** 소스 파일에서만 작동하기 때문에 많은 기존 CSS 스타일 시트를 연결해야하고 단순히 @require legacy/*를 사용하면 가장 좋은 솔루션입니다. –

3

을 수행 할 수 있습니다 단지 @require CSS 파일 :

@require 'something.css' 

n Gulp에서 연결 또는 기타 복잡성이 필요하지 않으며 파일로드 순서가 .styl 파일 내에서 명시 적으로 설정됩니다.

+0

다음을 준수해야합니다. 어떤 경우에는 위의 해결책이 필요할 수 있습니다. – Yash

+0

조금 더 확장 할 수 있습니까? 어떻게 이것이 문제를 해결했는지 확실치 않다 ...? http://stackoverflow.com/users/223225/geoffrey-booth – MaxRocket

+0

최종 결과가 원본 .css 및 .styl 파일을 모두 포함하는 하나의 CSS 파일이면 스타일러스 파일을 사용하여 스타일러스 파일을 포함 할 수 있습니다. 그렇게하면 단 하나의 빌드 경로 만 있습니다. 파일을 나중에 병합/병합하지 않고도 스타일러스를 컴파일하십시오. –

0

방금 ​​main.styl 파일의 다른 .styl 파일에 @require를 사용하고 gulp.src ('src/css/main.styl')를 보시오.