Я использую Node.js(через browserify) для каждого из моих веб-приложений, все из которых имеют некоторые общие зависимости и другие, специфичные для себя, Каждое из этих приложений имеет файл package.json
, который указывает, какие версии этих модулей ему нужны.
В настоящее время у меня есть каталог /node_modules
в родительской папке моих приложений для модулей, которые все они должны ссылаться, а затем я добавляю определенные приложения в папку node_modules
в этом каталоге приложения. Это прекрасно работает в краткосрочной перспективе, так как мои операторы require()
могут продолжать смотреть вверх в файловой структуре, пока не найдут каталог node_modules
с правильным приложением в нем.
Если это становится сложно, когда я хочу вернуться к старому проекту и запустить npm install
, чтобы убедиться, что он все еще может найти все необходимые ему зависимости. (Кто знает, какой смешной бизнес произошел с тех пор на уровне родительского каталога.) У меня создалось впечатление, что npm install
сделал это:
- для каждого модуля, указанного в
package.json
, сначала проверьте, присутствует ли он, перемещение каталога таким же образомrequire
. Если это не так, установите его в локальный каталогnode_modules
(при необходимости создав этот каталог).
Однако, когда я запускаю npm install
внутри папки приложения, он должен установить все локально, независимо от того, где еще он может существовать. Это правильное поведение? (Возможно, есть еще одна причина, например, язык плохой версии в моем package.json
). Если это правильное поведение, есть ли у меня способ npm install
вести себя как выше?
Не стоит широко тиражировать модули внутри каждого приложения, но оно бесполезно и не позволяет мне делать небольшие улучшения для общих модулей и не обновлять каждый старый package.json
файл. Конечно, это может быть хорошо...