从单独的gump文件导入/读取变量

Import / read variable from separate gulp file

本文关键字:读取 变量 导入 文件 单独 gump      更新时间:2023-09-26

我希望将gullfile.js的assetssrc变量拆分为单独的文件,以便更好地管理它们。例如:

....
var scripts = ['awful.js', 'lot.js', 'of.js', 'js.js', 'files.js']
....(somewhere down the line)
gulp.task('vendorjs', function() {
    return gulp.src(scripts)
        .pipe(concat('vendor.js'))
        .pipe(rename({suffix: '.min'}))
        .pipe(uglify())
        .pipe(gulp.dest(paths.root + 'dist'))
        .pipe(notify({ message: 'vendorjs task completed' }));
});

因此,如果有一种方法可以将scripts变量移动到一个单独的文件中,并能够从gulpfile.js访问它,我基本上感兴趣的是。

我一直在研究这样的东西:

require("fs").readFile('gulp/test.js', function(e, data) {
   //(test.js would be the file that holds the scripts var)
});

尽管它确实读取了文件的内容,但我仍然无法从gulpfile.js访问它。任何提示或想法都将不胜感激。

Node.js允许您使用require()导入其他文件。它支持三种类型的文件:
  • JSON文件。请参阅DavidDomain的答案
  • 二进制Node.js插件。对您的用例没有用处
  • JavaScript文件。这就是你想要的

对于JavaScript文件,从require()返回的值是在导入的文件中分配给module.exports的值。

因此,对于您的用例:

吞咽/测试.js

var arrayOfFiles = ["awful.js", "lots.js"];
arrayOfFiles.push("of.js");
arrayOfFiles.push("js.js");
arrayOfFiles.push("files.js");
for (var i = 0; i < 10; i++) {
  arrayOfFiles.push("some_other_file" + i + ".js");       
}
module.exports = {
  scripts: arrayOfFiles
};

gullfile.js

var test = require('gulp/test.js');
gulp.task('vendorjs', function() {
  return gulp.src(test.scripts)
    .pipe(concat('vendor.js'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest(paths.root + 'dist'))
    .pipe(notify({ message: 'vendorjs task completed' }));
});

您可以使用json文件将资产或源文件位置存储在中,并将其加载到gulp文件中。

例如:

// config.json
{
  "scripts": ["awful.js", "lot.js", "of.js", "js.js", "files.js"]
}

在你的gump文件中,你会做

// gulpfile.js
var config = require('./config');
var scripts = config.scripts;
console.log(scripts);