У меня есть следующая структура папок:
project
├───components
│ ├───component-one
│ │ package.json
│ │
│ └───component-two
│ │ package.json
│ │
│ └───node_modules
├───node_modules
└───package.json
Корневая папка проекта project
содержит package.json
и предназначена для установки различных инфраструктурных модулей (например, Gulp, так как сборка централизована).
Каждый компонент в папке components
в конечном итоге, после сборки и прочего, развертывается где-то для использования приложением - с использованием обычного npm install
из папки или архива. По этой причине каждый компонент должен поддерживать свои собственные зависимости в своем собственном package.json
.
Идя по тривиальному пути, установка node_modules
в каждую из папок компонентов приведет к безумному количеству дублирования, так как могут быть сотни компонентов, каждый из которых устанавливает в основном одни и те же зависимости.
В идеале я хотел бы:
- запустить, например,
npm install -D <module>
в папкеcomponent-one
- обновить
package.json
в этой папке с помощью<module>
- установить
<module>
в папкуproject
В некоторой степени этого можно достичь, запустив (в данном случае в Windows) mklink /D node_modules ..\..\node_modules
из component-one
для создания символической ссылки.
Однако символические ссылки хрупкие и привередливые, поэтому я бы хотел избежать этого решения.
Есть ли решение npm через npm link
или что-то, что я упустил?