javascript - Map gulp.task over multidimensional array -


information project

i'm developing more complex website requires several stylesheets frontend , backend loaded if specific conditions match.

i'm developing in scss , compiling files using gulp.

in gulpfile declare array frontend stylesheets , array containing backend ones. here how looks like. it's not finished though.

const cssfront     = [ 'style.scss' ]; const cssback      = [ 'admin.scss', 'settings.admin.scss' ]; let cssfiles       = [ cssfront, cssback ]; 

what code should do

gulp should map on files in cssfiles , compile css code of files.

what have done

however map-functions work 1 dimensional, tried reduce 2 dimensional array 1 dimensional 1 , map on it.

const sass         = require( 'gulp-sass' ); const autoprefixer = require( 'gulp-autoprefixer' );  const stylesrc     = './src/scss/'; const cssfront     = [ 'style.scss' ]; const cssback      = [ 'admin.scss', 'settings.admin.scss' ]; let cssfiles       = [ cssfront, cssback ]; const styleurl     = './assets/css/'; const mapurl       = './';  gulp.task( 'scss', function() {     cssfiles = cssfiles.reduce(function(a, b){         return a.concat(b);     });      cssfiles.map( function( file ) {         return gulp.src( stylesrc + file )         .pipe( sourcemaps.init() )         .pipe( sass({             errlogtoconsole: true,             outputstyle: 'compressed'         }) )         .on( 'error', console.error.bind( console ) )         .pipe( autoprefixer({ browsers: [ 'last 2 versions', '> 5%', 'firefox esr' ] }) )         .pipe( rename( { suffix: '.min' } ) )         .pipe( sourcemaps.write( mapurl ) )         .pipe( gulp.dest( styleurl ) )         .pipe( browsersync.stream() );     }); }); 

the problem

the reduce-function works well. did console.log , output was:

['style.scss', 'admin.scss', 'settings.admin.scss'] 

if running task directly ($ gulp scss) code works perfectly, files compiled , saved under assets/css/, if run $ gulp watch, receive error message saying

cssfiles.map not function

due error message assume there better way of writing gulp.task. i'd pleased if me out this.

problem in watch task.
when first run task - reduce cssfiles (several arrays [ cssfront, cssback ])

this result saved in variable cssfiles new value ['style.scss', 'admin.scss', 'settings.admin.scss']

when watch task run next time reduce resulted array ['style.scss', 'admin.scss', 'settings.admin.scss'] , new result string "style.scssadmin.scsssettings.admin.scss" , save in cssfiles variable

after error cssfiles.map not function
because "style.scssadmin.scsssettings.admin.scss".map() -> not function

you need reduce outside function task

cssfiles = cssfiles.reduce(function(a, b){     return a.concat(b); });  gulp.task( 'scss', function() {     cssfiles.map( function( file ) {         // ...     }); }); 

Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -