Изменить расположение модулей узла



есть ли способ изменить расположение папки node_modules?



например:



- dir1
- dir2
- node_modules


to:



- dir1
- dir2
- node_modules
635   2  

2 ответов:

ниже приведен код, который выглядит int 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;
};

Итак, ниже приведен точный шаблон поиска:

  1. узел.JS смотрит, является ли данный модуль основным модулем. (например,http,fs и т. д.) Всегда имеет приоритет в загрузке модули.

  2. , если данный модуль не является основным модулям(например,http,fs и т. д.), Узел.затем в JS начнет найдите каталог с именем,node_modules.

    он запустится в текущем каталоге (относительно текущего исполняемого файла в узел.JS), а затем работать свой путь вверх по иерархии папок, проверяя каждый уровень для папки папки node_modules. Один раз узел.JS находит node_modules папка, затем он попытается загрузить данный модуль либо как (.файл JS) JavaScript или в качестве имени подкаталога; если он находит по имени Директории, затем попробуйте загрузить файл различными способами. Так, например,

  3. если вы делаете запрос на загрузку модуля, "utils" и его каталог не a .JS файл тут:
    узел.JS будет искать иерархический каталог для node_modules и utils следующим образом:

    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
    
  4. если узел.JS по-прежнему не удается найти файл в вышеуказанных шагах, узел.затем js начнет просматривать пути к каталогам из переменные среды, т. е. NODE_PATH установить на вашей машине (очевидно, задано узлом.Файл установщика JS, если вы находитесь в windows) Не найдено во всех вышеперечисленных шагах, затем печатает трассировку стека в stder
    например.:Error:Cannot find module 'yourfile'
    для получения дополнительной информации: ссылка здесь даже циклический require () очень хорошо объяснил..

на самом деле, мы даже можем редактировать , в котором последняя строка:

if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"

мы можем указать наш собственный каталог вместо того, чтобы заботиться о домашнем каталоге пользователя:

%HOMEDRIVE%%HOMEPATH%

Так что узел-модули-расположение будет автоматически заботиться.

Comments

    Ничего не найдено.