请求-dir将我的依赖关系范围扩展到每个导入的文件?

时间:2014-10-09 11:03:04

标签: javascript node.js commonjs

我正在构建一个gulpfile并将任务拆分为不同的文件。在运行时,我require require-dir // ./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); }); 完成所有任务。

结构与此处的gulp文件相同:https://github.com/aseemk/requireDir

module.exports

它导入的任务如下所示:

exports.something

所以没有{{1}}或{{1}}。因此,我想知道requireDir是否仍然会自动将依赖关系范围扩展到每个任务。它是我的依赖项的范围还是我在执行此操作时将所有内容放在全局命名空间中?

1 个答案:

答案 0 :(得分:3)

您不需要在模块中使用module.exports。如果在你的第二个文件(gulp/tasks/browserSync)中你要这样做:

var localValue = "bar";

globalValue = "foo";

// and we never touch module.exports

然后节点将创建一个未导出的本地值和全局命名空间中的一个值,但这不应该是令人惊讶的。

如果您要在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为前缀),所有内容都保存在任务文件本身中。