2014-05-13 15 views
11

Ich habe eine einfache Gulp Build-Prozess-Setup zum Testen. Ich habe die Dokumentation viele Male gelesen, aber ich kann nicht scheinen, Gulp-inject zu bekommen, um die gewünschten Skripte in eine index.html Datei zu injizieren.Gulp-Inject funktioniert nicht

Meine Gulp-Datei sieht wie folgt aus:

gulp.task('inject1', function() { 
    return gulp.src('app/index.html') 
     .pipe(inject(gulp.src('./app/scripts/app.js', {read : false}))) // Not necessary to read the files (will speed up things), we're only after their paths 
     .pipe(gulp.dest("dist")); 
}); 

gulp.task('inject2', function() { 
    return gulp.src('app/scripts/**/*.js', {read : false}) // Not necessary to read the files (will speed up things), we're only after their paths 
     .pipe(inject("./app/index.html")) 
     .pipe(gulp.dest("./dist")); 
}); 

Dieser Teil meiner Index.html ist:

<!-- inject:js --> 

<!-- endinject--> 

Beide aus der Dokumentation auf Github kopiert werden.

Wenn ich eine dieser Aufgaben ausführen die Konsole sagt nur „Schritte‚injizieren‘fertig‚Inject‘ '

In meinem ./dist Ordner erstellt es eine Datei Index.html aber keine js Dateien injiziert werden.

ich habe der Eingabe in die src versucht und Eigenschaften viele verschiedene Art und Weise zu injizieren, aber kein Glück Jede Idee, was ich falsch mache

+0

Ich habe das gleiche Problem. Es sieht so aus, als würde es einen Noop machen, weil die resultierende HTML-Datei einfach die und Kommentare enthält. –

+1

Genau wie ich. Ich wünschte wirklich, es gäbe eine Art von Debugging-Mechanismus. –

+0

Ich hatte die gleiche Fehlermeldung, aber es stellte sich heraus, dass meine index.html Datei leer war! – user2023861

Antwort

9

aller Zuerst haben Sie einen Fehler in Ihrem endinject tag:.?

<!-- endinject--> 

sollte

seine
<!-- endinject --> 

Dieses Plugin toll für mich und andere in verschiedenen Einstellungen gearbeitet hat, so ist das Problem wahrscheinlich in Ihrer Konfiguration. Da Sie beim Streamen nicht sicher sein können, welche Dateien Sie weiterleiten, versuchen Sie immer, ein Plug-in zu verwenden, um genau zu sehen, welche Dateien weitergeleitet werden. Ich empfehle, gulp-using zu verwenden. Versuchen Sie dies Ihrem Setup zu debuggen:

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

gulp.task('inject2', function() { 
return gulp.src('app/scripts/**/*.js', {read : false}) 
    .pipe(debug()) 
    .pipe(inject("./app/index.html")) 
    .pipe(gulp.dest("./dist")); 
}); 

Auch stellen Sie sicher, dass Sie die gleiche Methode verwenden, um sicherzustellen, dass Sie auch Ihre html Datei übereinstimmen. Ansonsten - es ist nur Versuch und Irrtum, bis Sie verstehen, Rohrleitungen, um nur die richtigen Dateien mit dem richtigen Pfad zu erhalten.

Wenn gulp-inject keine Dateien eingibt, bedeutet das, dass Sie sie nicht korrekt weitergeleitet haben, oder Ihr Ziel inject war nicht korrekt. Das Plugin funktioniert und funktioniert super für mich.

Wenn Sie ein Beispiel Arbeits schluck Datei, um zu sehen, lesen Sie in diesem this gulpfile.js gist

+0

Gutes Auge. Ich hätte nicht erraten können, dass mein Problem die Leerzeichen in den Kommentaren waren. – welbornio

+3

Schluck-Verwendung ist Blacklist als Schluck-Plugin, Schluck-Debug empfohlen stattdessen: https://github.com/gulpjs/plugins/blob/master/src/blackList.json#L50 – Cosmin

+0

Gerade lief in ein ähnliches Problem; Ich habe '' in meinem Code verwendet. Anscheinend ist das '//' nicht erlaubt und verursachte Probleme. –

1

ich das gleiche Problem mit dem folgenden Code hatte:

var injectSrc = gulp.src(['./public/css/*.css', '.public/js/*.js'], {read: false}); 
var injectOptions = { 
    ignorePath: '/public' 
}; 
var options = { 
    bowerJson: require('./bower.json'), 
    directory: './public/lib', 
    ignorePath: '../../public' 
} 

gulp.task('inject', function() { 
    return gulp.src('./src/views/*.html') 
      .pipe(debug()) 
      .pipe(wiredep(options)) 
      .pipe(debug()) 
      .pipe(inject(injectSrc, injectOptions)) 
      .pipe(debug()) 
      .pipe(gulp.dest('./src/views')); 

}); 

Meine index.html hatte folgende Möglichkeiten:

<!--bower:css--> 
<!--endbower--> 
<!--bower:js--> 
<!--endbower--> 
<!--inject:css--> 
<!--endinject--> 
<!--inject:js--> 
<!--endinject--> 

Click on this link to see what my file structure was. Die inject wurde die Erstellung der CSS-Dateien c richtig, aber nicht die js-Dateien. Auch die Abhängigkeiten der Bower funktionieren gut.

Schließlich habe ich das fehlende '/' im Array gefunden, das an gulp.src() übergeben wurde. Nach dem Fixieren an:

var injectSrc = gulp.src(['./public/css/*.css', './public/js/*.js'], {read: false}); 

funktioniert es richtig.

Verwandte Themen