Есть ли способ изменить расположение папки node_modules?
Например:
- dir1
- dir2
- node_modules
в
- dir1
- dir2
- node_modules
Есть ли способ изменить расположение папки node_modules?
Например:
- dir1
- dir2
- node_modules
в
- dir1
- dir2
- node_modules
Ниже приведен код, который по умолчанию выглядит в папке 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 начнет поиск каталога с именем node_modules
.
Он запустится в текущем каталоге (относительно текущего исполняемого файла в Node.JS), а затем запустится вверх по иерархии папок, проверив каждый уровень для папки node_modules.
Как только Node.JS найдет папку node_modules
, он затем попытается загрузить данный модуль либо как файл (.js) JavaScript, либо как именованный подтекст -directory; если он найдет именованный подкаталог, он попытается загрузить файл по-разному. Итак, например
Если вы сделаете запрос на загрузку модуля, "utils" и его каталог не файл .js, то: Node.JS будет искать иерархический каталог для node_modules
и utils
следующими способами:
./node_modules/utils.js
./node_modules/utils/index.js
./node_modules/utils/package.json
Если Node.JS по-прежнему не удается найти файл в вышеуказанных шагах, Node.js начнет искать в каталоге пути от переменных окружения, т.е. NODE_PATH
, установленных на вашем компьютере (очевидно, установленным файлом установщика Node.JS, если вы находитесь в окнах)
Не найден во всех вышеперечисленных шагах, затем трассирует трассировку стека stder
Error:
Cannot find module 'yourfile'
Для получения дополнительной информации: ссылка здесь даже циклический require() объясняется очень хорошо..
Фактически, мы можем даже отредактировать файл nodevars.bat
, в котором находится последняя строка:
if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"
Мы можем указать наш собственный каталог, а не искать домашний каталог пользователя:
%HOMEDRIVE%%HOMEPATH%
чтобы node -modules-location автоматически выполнялся.