gpt4 book ai didi

javascript - require-dir 会将我的依赖项范围限制到每个导入的文件吗?

转载 作者:行者123 更新时间:2023-11-28 19:33:47 24 4
gpt4 key购买 nike

我正在构建一个 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.exportsexports.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com