我已将gulpfile.js
拆分成几个文件,并放在一个名为/gulp
的文件夹中,以更好地组织代码。但现在我想要传递一个名为debug(布尔)
的变量到这些文件中,以切换包含的gulp命令的行为(最终我将使用命令行参数,但现在我只想用一个变量来实现它)。
我使用的设置方式是,在看到yeoman angular/gulp套件中的一个方法后,使用了一个名为require-dir
的npm模块(它会加载/gulp
文件夹中的所有*.js文件,其中每个文件都有一组gulp任务被设置)。
gulpfile.js:
var gulp = require('gulp'),
run = require('run-sequence'),
debug = true;
require('require-dir')('./gulp');
gulp.task('default', ['build', 'server', 'watch', '...']);
这会加载类似于...
gulp/build.js:
var gulp = require('gulp'),
plumber = require('gulp-plumber'),
...;
gulp.task('build', function () {
console.log(debug);
});
当我运行gulp
命令时,它会执行default
任务,加载build.js文件并运行build
gulp任务。但不幸的是,debug
返回undefined。
我该怎么做才能让它工作呢?
我尝试使用module.exports()
和node的require()
方法,但我无法弄清楚如何在包含的文件中声明gulp任务,以便可以从主gulpfile.js
文件中运行它(按照所需的顺序)。
有人能提供一些帮助吗?谢谢
loadGulp()
方法后,gulp任务应该已经被注册了,那么我就可以运行gulp.start('build')
并且它会可用,对吗? - BuildTester1require('require-dir/gulp')
操作现在加载一个函数,运行该函数现在注册 gulp 任务,之后可以像其他任务一样调用它。 - Mike 'Pomax' Kamermansrequire('gulp/build.js');
而不是var build = require('gulp/build.js')
? - BuildTester1require('./gulp/build')(debug);
可以正常工作,但看起来很奇怪,所以您可能想将module.exports更改为返回一个对象{ loadTask: function(debug) { ... } };
,这样您的主代码调用看起来像require('./gulp/build').loadTask(debug);
。这样更加舒适,也更合理作为代码调用。 - Mike 'Pomax' Kamermansrequire('./gulp/build').loadTask(debug);
看起来不错!感谢你的所有帮助! - BuildTester1