2015-05-23 10 views
22

Mi sto solo occupando di Gulp.js e questo è l'unico errore che non riesco a capire.Gulp - TypeError: impossibile assegnare alla proprietà di sola lettura 'cwd' di bower/bootstrap.css

Ho installato bootstrap via bower, e sto cercando di minimizzare il cst di bootstrap.

Ecco il mio compito da inghiottire;

gulp.task('minifycss', function() { 
gulp.src('www/css/animate.css', 'www/bower_components/bootstrap/dist/css/bootstrap.css') 
    .pipe(minifycss({compatibility: 'ie8'})) 
    .pipe(gulp.dest('www-deploy/css/')); 
}); 

Tuttavia quando eseguo il mio compito principale gulp. Essa afferma che il file è "sola lettura"

Karls-MacBook-Pro:cmp-2015 karltaylor$ gulp 
[13:48:50] Using gulpfile ~/Documents/web/cmp-2015/gulpfile.js 
[13:48:50] Starting 'sassMin'... 
[13:48:50] Finished 'sassMin' after 12 ms 
[13:48:50] Starting 'minifycss'... 
[13:48:50] 'minifycss' errored after 508 μs 
[13:48:50] TypeError: Cannot assign to read only property 'cwd' of www/bower_components/bootstrap/dist/css/bootstrap.css 
    at Object.gs.createStream (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/index.js:19:46) 
    at Object.gs.create (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/index.js:68:42) 
    at Gulp.src (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/vinyl-fs/lib/src/index.js:33:23) 
    at Gulp.<anonymous> (/Users/karltaylor/Documents/web/cmp-2015/gulpfile.js:35:7) 
    at module.exports (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:34:7) 
    at Gulp.Orchestrator._runTask (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/index.js:273:3) 
    at Gulp.Orchestrator._runStep (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/index.js:214:10) 
    at /Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/index.js:279:18 
    at finish (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:21:8) 
    at module.exports (/Users/karltaylor/Documents/web/cmp-2015/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:60:3) 

Le cose che ho provato:

  1. reinstallazione bootstrap
  2. spostamento del file bootstrap.css effettivo al mio file css, ma fa esattamente la stessa cosa.

MODIFICA: SOLVED = Per utilizzare più origini è necessario inserirle in un array.

Fonte: https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md

+1

penso che questo sta accadendo perché si hanno due f iles nel tuo gulp.src. Prova questa riga per verificare (sostituisci la tua linea gulp.src): 'return gulp.src ('www/bower_components/bootstrap/dist/css/bootstrap.css')' –

+0

@topleft questo ha fatto il trucco! Quando si utilizzano più file di origine sembra come se dovessi metterlo in un array o usare un merge-stream. - https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md –

+0

metterli all'interno di array ha risolto il problema. gulp.src ([,]) – Deke

risposta

50

Come @topleft accennato, è stato l'errore nella sintassi dall'utilizzo di più file nel mio gulp.src. Per utilizzare più fonti è necessario inserirle in un array.

Esempio:

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

gulp.task('default', function() { 
    return gulp.src(['foo/*', 'bar/*']) 
     .pipe(concat('result.txt')) 
     .pipe(gulp.dest('build')); 
}); 
2

in alternativa si potrebbe anche provare con

return gulp.src('www/**/*.css') 

dovrebbe aggiungere ogni css nella vostra directory se questo è il desiderato effetto

+0

l'ordine è importante in questo caso! Quindi non puoi farlo. – dsandrade

0

ho avuto questo problema quando ho cercato di uscita 2 file CSS e non ho usato array [].

Invece di:

gulp.src('www/css/animate.css', 'www/bower_components/bootstrap/dist/css/bootstrap.css') 
    .pipe(minifycss({compatibility: 'ie8'})) 
    .pipe(gulp.dest('www-deploy/css/')); 
}); 

Utilizzare questa:

gulp.src(['www/css/animate.css', 'www/bower_components/bootstrap/dist/css/bootstrap.css']) 
    .pipe(minifycss({compatibility: 'ie8'})) 
    .pipe(gulp.dest('www-deploy/css/')); 
}); 

Spiegazione:

gulp.src(['./file1.scss', './file2.scss']);