Search code examples
javascriptgulpjavascript-objectsgulp-header

How to inject variable value into JS file from GULP


Hopefully this is a quick question.

What I'm trying to do is to add a timestamp into a Javascript object in a JS file while the file is being built with GULP. Basically, in "file.js", I have an object where I would like to have object.timeStamp that equals the time of the GULP build.

I am currently adding a timestamp to the top of the file using gulp-header, but I have been asked to add the timestamp to a property in the object.

My thought was to inject the value from GULP, but all of the injection plugins I have found so far are for injecting contents of one file into the target file.

Any help would be greatly appreciated.


Solution

  • Are you using any kind of modules? ES6 modules, AMD, CommonJS, ...?

    If so, you can generate a config module with Gulp where you can inject any variable you want. It would look something like this:

    config.tmpl.js

    module.exports = <%= config %>
    

    config gulp task

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

    and finally, in your JS file

    var config = require('path/to/config.js');
    
    var object = {
      timeStamp: config.timeStamp
    }