Я использую Node.js (через browserify) для каждого из моих веб-приложений, все из которых имеют общие зависимости и другие, специфичные для себя. Каждое из этих приложений имеет файл package.json
, который указывает, какие версии этих модулей ему нужны.Как работает установка npm
Прямо сейчас, у меня есть каталог /node_modules
в родительской папке моих приложений для модулей, которые все они должны ссылаться, а затем я добавляю в программу папку приложения node_modules
в каталог этого приложения. Это прекрасно работает в краткосрочной перспективе, так как операторы require()
могут продолжать смотреть вверх в файловой структуре, пока не найдут каталог node_modules
с правильным приложением.
Если это становится сложно, когда я хочу вернуться к старому проекту и запустить npm install
, чтобы убедиться, что он все еще может найти все необходимые ему зависимости. (Кто знает, что смешно бизнеса произошло с тех пор на уровне родительского каталога.) Я был под впечатлением, что npm install
сделал это:
- для каждого модуля, указанного в
package.json
, первый чек, если он присутствует, движение вверх каталог таким же образомrequire
делает. Если это не так, установите его в локальный каталогnode_modules
(при необходимости создав этот каталог).
Когда я запустил npm install
внутри папки приложения, однако он, кажется, устанавливает все локально, независимо от того, где еще он может существовать. Это правильное поведение? (Возможно, есть еще одна причина, например, язык плохой версии в моем package.json
). Если это правильное поведение, есть ли у меня способ, чтобы npm install
вел себя так, как указано выше?
Неплохо распространять модули внутри каждого приложения, но оно бесполезно и не позволяет мне делать небольшие улучшения для общих модулей и не обновлять каждый старый файл package.json
. Конечно, это может быть хорошо ...
Вот ссылка. Пожалуйста, пойдите по этой ссылке. Это может быть полезно для вас. [https://www.npmjs.org/doc/cli/npm-shrinkwrap.html](https://www.npmjs.org/doc/cli/npm-shrinkwrap.html) –