2014-05-13 29 views
11

Ho una semplice configurazione del processo di generazione Gulp per il test. Ho letto la documentazione molte volte ma non riesco a convincere Gulp-inject a iniettare gli script che voglio in un file index.html.Gulp-Inject non funziona

file di mio Gulp si presenta così:

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")); 
}); 

Questo fa parte del mio Index.HTML:

<!-- inject:js --> 

<!-- endinject--> 

Entrambi questi vengono copiati dalla documentazione su GitHub.

Quando eseguo uno di questi compiti la console dice solo "ha iniziato 'iniettare' Finito 'Inject' '

Nella mia cartella ./dist crea un file index.html, ma nessun file js vengono iniettati.

ho provato a digitare nel src e iniettare proprietà molti modo diverso, ma senza fortuna Qualsiasi idea di cosa sto facendo male

+0

Sto avendo lo stesso problema. Sembra che stia facendo un noop, perché il file HTML risultante conserva semplicemente i commenti e . –

+1

Come me. Vorrei davvero che fosse presente una sorta di meccanismo di debugging. –

+0

Ho avuto lo stesso messaggio di errore, ma è risultato che il mio file index.html era vuoto! – user2023861

risposta

9

Prima di tutto si ha un errore nel tag endinject:.?

<!-- endinject--> 

dovrebbe essere

<!-- endinject --> 

Questo plugin ha lavorato molto per me e per gli altri in varie impostazioni, quindi il problema è probabilmente nella configurazione. Perché quando si utilizza lo streaming, non si può essere sicuri di quali file si collegano, provare sempre a utilizzare un plug-in per vedere esattamente quali file si stanno piping. Raccomando l'uso di gulp-using. Prova questo per eseguire il debug di installazione:

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")); 
}); 

anche assicurarsi di utilizzare lo stesso metodo per verificare di far corrispondere il file html pure. Oltre a questo, sono solo tentativi ed errori finché non si capisce il piping per ottenere i file giusti con il percorso corretto.

Se gulp-inject non sta iniettando alcun file, significa che non è stato eseguito il pipe correttamente, oppure il target inject non era corretto. Il plugin funziona e funziona perfettamente per me.

Se avete bisogno di vedere un esempio di lavoro file di gulp, controlla questo this gulpfile.js gist

+0

Buon occhio. Non avrei potuto indovinare che il mio problema erano gli spazi nei commenti. – welbornio

+3

gulp-using è nella lista nera come plug-in gulp, consigliato invece gulp-debug: https://github.com/gulpjs/plugins/blob/master/src/blackList.json#L50 – Cosmin

+0

Si è appena imbattuto in un problema simile; Stavo usando '' nel mio codice. Apparentemente il '//' non è permesso e stava causando problemi. –

1

Ho avuto lo stesso problema con il seguente codice:

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')); 

}); 

mio index.html avuto il seguente:

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

Click on this link to see what my file structure was. L'iniettare stava creando i file CSS c orrettamente ma non i file js. Anche le dipendenze bower funzionavano bene.

Infine ho rilevato il "/" mancante nell'array passato a gulp.src(). Dopo averlo corretto a:

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

funziona correttamente.