Могу ли я поместить каталог npm node_modules вне моего проекта - PullRequest
1 голос
/ 27 мая 2020

Могу ли я поместить каталог node_modules вне моего проекта точно так же, как maven со своими зависимостями?

Ответы [ 3 ]

2 голосов
/ 27 мая 2020

Вроде. Каталог node_modules на самом деле не является функцией npm, а является функцией node.js.

Как node.js использует node_modules.

Когда вам требуется модуль node.js будет искать каталог node_modules от текущего каталога вверх. Это означает, что если он не может найти его в текущем каталоге (который на самом деле может быть подкаталогом вашего проекта, а не каталогом вашего проекта), он будет искать его в родительском каталоге, а затем родительский родительский элемент до вашего root каталог.

Например, у вас может быть такая структура проекта:

/node_modules   <-------------------- modules available to all projects    
/code
     /project_A
                /node_modules <------ modules available to project A
                /lib
                    /node_modules <-- modules available to the lib directory
     /project_B
               /node_modules  <------ modules available to project B

Таким образом, у вас могут быть некоторые модули, совместно используемые несколькими проектами, а некоторые модули, специфичные для проекта c и даже некоторые модули, которые доступны только для некоторых файлов в вашем проекте.

Как npm обрабатывает node_modules

Обратите внимание, что npm имеет только одну интерпретацию node_modules. Он управляет только node_modules в каталоге вашего проекта. В частности, каталог, содержащий файл package.json.

Так что да, вы можете это сделать, но npm не поймет, что вы делаете, и ваш package.json будет содержать неполные зависимости. Я бы не рекомендовал делать это с проектами с участием нескольких разработчиков, потому что это будет больше похоже на неправильно настроенную среду разработки - в основном другие будут думать, что это ошибка. Однако я лично использовал такие структуры для личных проектов, где меня не волнует мой файл package.json.

1 голос
/ 27 мая 2020

Как указано в этом вопросе Не делайте этого. Пусть NPM работает так, как задумано. Однако для экономии места вы можете удалить папку node_modules в проектах, которые в настоящее время неактивны, и воссоздать ее с помощью одного кадра установки npm при обратном переключении на них.

Это проблема, если плагин объявляет об установке модулей в настраиваемый каталог. Поэтому предлагаю поправить документацию, это вселяет ложные надежды. См. npm docs , так как это поведение по умолчанию npm. Это не проблема внешнего интерфейса-maven-plugin.

1 голос
/ 27 мая 2020

Да, вы можете, но вам следует избегать этого.

npm install всегда будет устанавливать модули в папке node_modules в вашем родительском рабочем каталоге.

Каждый раз, когда вы устанавливаете модуль используя npm install -g module_name, он устанавливает модули глобально за пределами вашего каталога проекта, которые также могут использоваться в других проектах, обычно некоторые зависимости разработчика устанавливаются глобально, что помогает вам в целях разработки.

Примером может быть npm install -g @angular/cli, один раз выполнив это, вы сможете использовать команды ng для сборки и тестирования других angular проектов.

Помимо этого, было бы идеально, если бы все node_modules, которые требуются для вашего проекта, остались в рабочем каталоге вашего проекта.

Установка чего-либо глобально вне вашего проекта считается плохой практикой, поскольку разные проекты могут зависеть от разных версий одного и того же node_module. Установка node_modules локально в каталоге проекта позволяет различным проектам иметь разные Versi модули того же node_module.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...