Bui*_*er1 12 javascript require node.js npm gulp
我已将我gulpfile.js分成几个文件放在一个/gulp文件夹中,以便更好地组织代码.但是现在我想将一个变量传递给debug (boolean)将切换gulp命令行为的文件(最终我将使用命令行参数,但是现在我只想让它与变量一起工作).
我使用我在yeoman angular/gulp包中看到的方法进行此设置的方法是使用一个名为的npm模块require-dir(它在/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', '...']);
Run Code Online (Sandbox Code Playgroud)
哪个会加载像......
吞掉/ build.js:
var gulp = require('gulp'),
plumber = require('gulp-plumber'),
...;
gulp.task('build', function () {
console.log(debug);
});
Run Code Online (Sandbox Code Playgroud)
因此,当我运行gulp运行default任务的命令时,它将加载build.js然后执行gulp build任务.但不幸的是,似乎debug返回未定义.
我怎么能让这个工作?
我正在考虑使用just module.exports()和node的require()方法,但我无法弄清楚如何在包含的文件中声明gulp任务,以便可以从主gulpfile.js文件(按照所需的顺序)运行.
有人可以提供一些帮助吗?谢谢
Mik*_*ans 10
正常的模块方式,真的.只需更改该gulp/build.js文件,而不是实际将任何内容导出到正确的require-able模块:
module.exports = function(debug) {
"use strict";
var gulp = require('gulp'),
plumber = require('gulp-plumber'),
...;
gulp.task('build', function () {
console.log(debug);
});
};
Run Code Online (Sandbox Code Playgroud)
然后在主文件中将其称为:
...
var loadGulp = require('require-dir/gulp');
...
var debug = true;
loadGulp(debug);
Run Code Online (Sandbox Code Playgroud)
Node.js提供了一个名为的全局变量global,实际上,module它是所有模块中的相同实例(不同于每个模块中的不同).通过设定值,global它们变得真正全球化.作为额外的奖励,您不需要使用前缀访问全局变量global..这两个global.foo和公正foo是等价的,只要你没有命名的另一个变量foo的范围.