如何从 GULP 将变量值注入 JS 文件

How to inject variable value into JS file from GULP

希望这是一个快速的问题。

我想做的是在使用 GULP 构建文件时将时间戳添加到 JS 文件中的 Javascript 对象中。基本上,在 "file.js" 中,我有一个对象,我希望 object.timeStamp 等于 GULP 构建的时间。

我目前正在使用 gulp-header 在文件顶部添加时间戳,但系统要求我将时间戳添加到对象中的 属性。

我的想法是从GULP中注入值,但是到目前为止我发现的所有注入插件都是为了将​​一个文件的内容注入到目标文件中。

如有任何帮助,我们将不胜感激。

O.K., 所以我想出了一个解决方法,可以让我到达我想去的地方。第一个是使用 gulp-header 将变量声明插入到我的 Javascript 文件中,使用此代码:

在GULP中:

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

然后,在我的Javascript文件中,我在object中设置了一个属性是一个函数,并设置了我要找的时间戳属性通过使用 gulp-header 从上面注入的 timeStamp 变量中获取值,如下所示:

在 JS 文件中,header 功能插入:

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

然后我的函数,在 JS Object 中就是这样:

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

它在调用时运行并设置 object 内的时间戳。

似乎应该有更简单的方法来做到这一点,但目前,这是可行的。

如果您有任何改进的想法,我很乐意听取他们的意见!

您正在使用任何类型的模块吗? ES6 模块、AMD、CommonJS、...?

如果是这样,您可以生成一个带有Gulp的配置模块,您可以在其中注入 任何你想要的变量。它看起来像这样:

config.tmpl.js

module.exports = <%= config %>

配置gulp任务

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

最后,在您的 JS 文件中

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

var object = {
  timeStamp: config.timeStamp
}