有没有办法更改node_modules文件夹位置?
例如:
- dir1
- dir2
- node_modules
为:
- dir1
- dir2
- node_modules
答案 0 :(得分:48)
以下是默认情况下node_modules
文件夹中的代码
Module.prototype.load = function(filename) {
debug('load ' + JSON.stringify(filename) +
' for module ' + JSON.stringify(this.id));
assert(!this.loaded);
this.filename = filename;
this.paths = Module._nodeModulePaths(path.dirname(filename));
var extension = path.extname(filename) || '.js';
if (!Module._extensions[extension]) extension = '.js';
Module._extensions[extension](this, filename);
this.loaded = true;
};
因此,以下是确切的搜索模式:
Node.JS查看给定模块是否为核心模块。
(例如http
,fs
等)始终在加载中优先
模块。
如果给定的模块不是核心模块(例如http
,fs
等),Node.js将开始搜索名为 {的目录。 {1}}
它将从当前目录(相对于Node.JS中当前正在执行的文件)开始,然后在文件夹层次结构中向上运行,检查node_modules文件夹的每个级别。
一旦Node.JS找到node_modules
文件夹,它就会尝试将给定模块加载为(.js)JavaScript文件或命名子目录;如果它找到了命名的子目录,它将尝试以各种方式加载该文件。所以,例如
如果您请求加载模块,“utils”及其目录而不是.js文件,则:Node.JS将在分层目录中搜索node_modules
和node_modules
通过以下方式:
utils
如果Node.JS仍无法在上述步骤中找到该文件,Node.js将开始从环境变量中查看目录路径,即 ./node_modules/utils.js
./node_modules/utils/index.js
./node_modules/utils/package.json
在您的机器上设置(如果您在Windows上,显然由Node.JS安装程序文件设置)
然后,在上述所有步骤中找不到,将堆栈跟踪打印到stder 例如: NODE_PATH
Error:
有关更多信息:链接为here,即使循环require()也能得到很好的解释。
答案 1 :(得分:1)
实际上,我们甚至可以编辑最后一行所在的at vec1 1 vec2 is { 2 3 4 5 6 7 }
at vec1 2 vec2 is { 2 3 4 5 6 7 1 1 1 1 1 1 }
at vec1 3 vec2 is { 2 3 4 5 6 7 1 1 1 1 1 1 2 2 2 2 2 }
at vec1 4 vec2 is { 2 3 4 5 6 7 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 }
at vec1 5 vec2 is { 2 3 4 5 6 7 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 }
at vec1 6 vec2 is { 2 3 4 5 6 7 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 5 5 }
文件:
nodevars.bat
我们可以指定自己的目录,而不是管理用户的主目录:
if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"
以便node-modules-location自动处理。