Понимание параметров npm и Node.js для модулей

Я использую Node.js и npm в течение нескольких недель с большим успехом и начал опробовать лучшую практику для установки локальных модулей. Я понимаю Глобальный против локального аргумента, однако мой вопрос больше связан с тем, где разместить локальную установку, Скажем, у меня есть проект, расположенный в ~/ProjectA/, который контролируется версиями и обрабатывается несколькими разработчиками. При первоначальном воспроизведении с Node.js и npm я не знал о локальных путях установки по умолчанию и просто просто установил необходимые модули в терминале по умолчанию, в результате чего был установлен путь ~/node_modules. Для этого нужно, чтобы все остальные разработчики, работающие над проектом, устанавливали модули на своих машинах для запуска приложения. Увидев, где некоторые из разработчиков запустили npm install, я по-прежнему очень удивлен, что он вообще работал на своих машинах (я думаю, это относится к как Node.js и require() ищет модули), но, разумеется, это сработало.

Теперь, когда проект проходит стадию "созерцания", я хотел бы правильно настроить папку проекта. Итак, мой вопрос заключается в том, должны ли модули устанавливаться на уровне ~/ProjectA/node_modules и, следовательно, быть частью файлов проектов, управляемых версиями, или если они по-прежнему будут расположены в определенном месте на уровне разработчика... или это не имеет особого значения в все?

Я просто ищу небольшое руководство по передовому опыту в этом и что другие делают при настройке ваших проектов.

Ответ 1

Я думаю, что "наилучшей практикой" здесь является сохранение зависимостей в папке проекта.
Почти все проекты Node, которые я видел до сих пор (разработчик Node имеет около 8 месяцев), сделайте это.

Вам не нужно управлять версиями зависимостей. Вот как я управляю проектами Node:

  • Сохраняйте версии в файле package.json, поэтому каждый получает одну и ту же рабочую версию или использует команду npm shrinkwrap в корне вашего проекта.
  • Добавьте папку node_modules в файл игнорирования VCS (я использую git, поэтому my .gitignore)
  • Будьте счастливы, все готово!