我正在构建一个 gulpfile 并将任务分成不同的文件。在运行时,我使用 require-dir
一次require
所有任务:https://github.com/aseemk/requireDir .
该结构与此处找到的 gulpfile 相同:https://github.com/greypants/gulp-starter :
// ./gulpfile.js
var requireDir = require('require-dir');
requireDir('./gulp/tasks', { recurse: true });
它导入的任务如下所示:
// ./gulp/tasks/browserSync.js
var browserSync = require('browser-sync');
var gulp = require('gulp');
var config = require('../config').browserSync;
gulp.task('browserSync', ['build'], function() {
browserSync(config);
});
所以没有module.exports
或exports.something
。因此,我想知道 requireDir 是否仍会自动将依赖项范围限制到每个任务。它是否限制了我的依赖项,或者当我这样做时我是否将所有内容都放在全局命名空间中?
最佳答案
您不需要在模块中使用module.exports
。如果在您的第二个文件 (gulp/tasks/browserSync
) 中您要执行以下操作:
var localValue = "bar";
globalValue = "foo";
// and we never touch module.exports
然后 Node 将创建 1 个未导出的本地值和 1 个全局命名空间中的值,但这并不奇怪。
如果您要在 gulpfile.js
中执行此操作:
var baz = requireDir('./gulp/tasks', { recurse: true });
那么baz
将是:
{
...
"browserSync": {}, // the default value of
... // `module.exports` is an object ( {} )
}
当您在 require()
文件之一中执行此操作时:
var gulp = require("gulp");
然后 require
将返回 cached response ,因为它之前已经在主文件中加载了 /node_modules/gulp/
。
所以是的,由于您没有创建全局值(所有内容都以 var
为前缀),因此所有内容都包含在任务文件本身中。
关于javascript - require-dir 会将我的依赖项范围限制到每个导入的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276770/