【发布时间】:2016-02-27 09:28:47
【问题描述】:
我有许多 gulp 任务,每个任务都驻留在自己的文件中(使用 require-dir 模块),而不是一个单一的文件。
我使用模块进行配置设置,而不是 json 文件(我更喜欢 cmets 和派生值)。
为了简单起见,这里有一个示例设置,我需要在 gulp 任务之间共享/设置一个键。
/config/index.js
var config = {}
config.buildType = ''; // set this to either 'dev' or 'dist'
module.exports = config;
这是我想将 config.buildType 设置为 'dev' 的默认任务
default.js
var gulp = require('gulp');
var config = require('../config/');
gulp.task('default', ['build'], function(cb) {
});
这是我想将 buildType 设置为 'dist' 的部署任务
部署.js
var gulp = require('gulp');
var config = require('../config/');
gulp.task('deploy-s3', ['build'], function() {
});
这是一个构建任务,我想根据 buildType 进行更改
构建.js
var gulp = require('gulp');
var runSequence = require('run-sequence');
var config = require('../config/');
gulp.task('build', function(cb) {
console.log('in build',config.buildType);
if (config.buildType == 'dev') runSequence('clean',['sass',config.htmlGenerator], 'watch', cb);
if (config.buildType == 'dist') runSequence('clean',['sass',config.htmlGenerator], cb);
});
这就是问题所在如果我在 default.js 中设置 config.buildType 或在 gulp.task 之外设置 deploy.js 那么因为它们都被 require-dir 归为一个文件,所以值是只需最后加载哪个文件。如果我在 gulp.task 函数中设置它,我对该设置的时间/范围感到困惑。
更新:发现此相关问题https://github.com/gulpjs/gulp/issues/193。在这个问题中指出,任务函数在所有排队的任务之后启动,这意味着我不能在任务函数中设置一些东西并期望它在列出的任务之前执行(在我的例子中是“构建”)
一个发帖人做了一个任务来设置这样的参数
gulp.task('set-dist', function () {
config.buildType = 'dist';
});
gulp.task('deploy', ['set-dist', 'build']);
所以一些建议.....我应该走这个“黑客”的路还是有更好的方法来做到这一点??
(仅供参考,我自己学习 node/javascript 才几个月,所以我的经验有限)
【问题讨论】:
标签: javascript node.js gulp global