2016-05-10 25 views
8

Esiste qualche opzione disponibile in gulp-sass per combinare i file sass?Combina tutti i file sass in un singolo file

Ad esempio:

main.scss:

$var: red; 

control.scss:

@import 'main'; 
.a{ 
    color: $var; 
} 

Il file di output combinato dovrebbe essere unico file SCSS come qui di seguito

$var: red; 
.a{ 
    color: $var; 
} 
+0

Questo sarebbe veramente utile per le librerie di componenti, piuttosto che fornire solo un file .css compilato. –

risposta

6

Hai provato qualcosa del genere?

gulp = require('gulp'); 
concat = require('gulp-concat'); 

// the default task 
gulp.task('default', function() { 
    return gulp.src('./*.scss') 
     .pipe(concat('all.scss')) 
     .pipe(gulp.dest('./dist/')); 
}); 

Questo dovrebbe produrre un singolo SCSS combinati in ./dist/all.scss.

Non so se @import dichiarazioni sono gestiti correttamente, ma questi problemi sono di solito gestiti da ad hoc moduli (per esempio, gulp-sass), che producono una potenza .css ...

+0

grazie per l'aggiornamento. Il tuo codice è stato compilato come file css, ma l'output dovrebbe essere un file scss che mi aspettavo. –

+0

Ci scusiamo: perché vuoi 'scss' in output? Di solito vuoi trasmettere css al pubblico ... – MarcoS

+0

Sì, posso ottenere il file css nella destinazione, ma ho anche bisogno di fornire il file scss, in modo che possano modificarlo e compilarlo manualmente. –

-1

È devi eseguire un file che importi tutti gli altri file scss, ma quando ascolti le modifiche, devi ascoltare le modifiche di tutti i file nella directory scss.

gulp.task('sass', function() { 
     // You have to execute one file that import all other scss files 
     return gulp.src('src/scss/*.scss') 
       .pipe(sass()) 
       .pipe(gulp.dest('build/css')); 
    }); 



gulp.task('watch', function() { 
     // You have to listen the all files in the scss directory 
     gulp.watch('src/scss/**/*.scss',['sass']);  
    });