2015-12-08 32 views
5

Si spera che questa sia una domanda veloce.Come iniettare il valore variabile nel file JS da GULP

Quello che sto cercando di fare è aggiungere un timestamp in un oggetto Javascript in un file JS mentre il file è in costruzione con GULP. Fondamentalmente, in "file.js", ho un oggetto in cui mi piacerebbe avere object.timeStamp uguale al tempo della build GULP.

Attualmente sto aggiungendo un timestamp all'inizio del file usando gulp-header, ma mi è stato chiesto di aggiungere il timestamp a una proprietà nell'oggetto.

Il mio pensiero era quello di iniettare il valore da GULP, ma tutti i plug-in di iniezione che ho trovato finora sono per l'iniezione di contenuti di un file nel file di destinazione.

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

8

Si sta utilizzando qualsiasi tipo di modulo? Moduli ES6, AMD, CommonJS, ...?

Se è così, è possibile generare un modulo di configurazione con Gulp in cui è possibile iniettare qualsiasi variabile che si desidera. Sarebbe simile a questa:

config.tmpl.js

module.exports = <%= config %> 

config sorso compito

var gulp = require('gulp'); 
var template = require('gulp-template'); 
var rename = require('gulp-rename'); 

gulp.task('config', function() { 
    return gulp.src('path/to/config.tmpl.js') 
    .pipe(template({config: JSON.stringify({ 
     timeStamp: new Date() 
    })})) 
    .pipe(rename('config.js')) 
    .pipe(gulp.dest('path/to/config.js')); 
}); 

e, infine, nel file JS

var config = require('path/to/config.js'); 

var object = { 
    timeStamp: config.timeStamp 
} 
1

O.K., quindi ho trovato una soluzione che mi permette di essere dove voglio essere. Il primo è usare il sorso-header per inserire una dichiarazione di variabile nel mio file JavaScript utilizzando questo codice:

In GULP:

var d = new Date(); 
    .pipe(header("var timeStamp = '" + d +"';")) 

Poi, nel mio file Javascript, ho creato una proprietà nel oggetto che è una funzione e imposta la proprietà timeStamp che stavo cercando ottenendo il valore dalla variabile timeStamp iniettata sopra usando l'intestazione gulp, come questo:

Nel file JS, la funzionalità dell'intestazione inserisce questo:

var timeStamp = 'Tue Dec 08 2015 15:15:11 GMT-0800 (PST)'; 

E poi la mia funzione, in oggetto JS è semplicemente questo:

ts: function(){ 
    object.timeStamp = timeStamp; 
    }, 

Il che, quando viene chiamato, corre e imposta il timestamp interno dell'oggetto.

Sembra che ci dovrebbe essere un modo più semplice per farlo, ma per ora, questo funziona.

Se avete qualche idea su come renderlo migliore, mi piacerebbe sentirli!