2015-11-13 5 views
6

Ich versuche Wiredep in einer Gulp-Aufgabe zu verwenden, um Bower-Abhängigkeiten in meine index.html-Datei zu injizieren. Die folgende Aufgabe (ohne WireDep) läuft einwandfrei.Warum gibt es in meiner Schluckaufgabe keine Fehlermeldung von "Wiredep" mit "dest.on ist keine Funktion"?

gulp.task('build', ['copy', 'assets'], function(){ 

    return gulp.src('app/index.html') 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

Jetzt habe ich versucht, Wiredep, um es hinzuzufügen:

var wiredep = require('wiredep'); 

gulp.task('build', ['copy', 'assets'], function(){ 

    return gulp.src('app/index.html') 
    .pipe(wiredep()) 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

was zur Folge hat:

[09:45:11] TypeError: dest.on is not a function 
    at DestroyableTransform.Readable.pipe (C:\GIT\myApp\myApp-front\node_module 
s\gulp-debug\node_modules\through2\node_modules\readable-stream\lib\_stream_read 
able.js:533:8) 
    at Gulp.<anonymous> (C:\GIT\myApp\myApp-front\gulpfile.js:38:6) 
    at module.exports (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\ 
orchestrator\lib\runTask.js:34:7) 
    at Gulp.Orchestrator._runTask (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\index.js:273:3) 
    at Gulp.Orchestrator._runStep (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\index.js:214:10) 
    at C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\ind 
ex.js:279:18 
    at finish (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestr 
ator\lib\runTask.js:21:8) 
    at C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\lib 
\runTask.js:52:4 
    at f (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\ 
node_modules\end-of-stream\node_modules\once\once.js:17:25) 
    at DestroyableTransform.onend (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\node_modules\end-of-stream\index.js:31:18) 

versuchte ich using Wiredep from the command line direkt und es gut laufen. Ich verwende Windows unter Verwendung von Node v4.2.2.

EDIT Wenn jemand das gleiche Problem auftritt, dann ist die Abhilfe ist, um die Aufgabe zu ändern:

gulp.task('build', ['copy', 'assets'], function(){ 
    wiredep({src:'dist/index.html'}); 

    return gulp.src('dist/index.html') 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

Beachten Sie, dass der index.html auf das dist-Verzeichnis kopiert wird, bevor beeing injiziert.

Ich frage mich immer noch, warum kann ich nicht Streams verwenden, um die Abhängigkeiten zu verdrahten.

Antwort

14

Ich bin gerade selbst auf dieses Problem gestoßen. Es liegt an der Art, wie Sie den Drahtdeport importieren. Sie müssen die folgende tun, um für sie als Teil eines großen Schluck Strom geleitet werden:

var wiredep = require('wiredep').stream; 

Ohne den .stream Teil ermöglicht es Ihnen, außerhalb einer Schwallstrom als Funktion zu verwenden wiredep.