зависимости в раздел Node.js легко: данный модуль идентификатор, который требует поиска, то require.resolve
algorithm поиск в node_modules
directories и идет вверх по дереву каталогов делать это, пока модуль не будет решена:
Если идентификатор модуля передается require()
не родной модуль, и не начинается с '/'
, '../'
или './'
, затем Node.js запускается в родительском каталоге текущего модуля и добавляет /node_modules
и пытается загрузить модуль из этого местоположения.
Если он не найден, он перемещается в родительский каталог и так далее, пока не будет достигнут корень файловой системы.
Возвращаясь к вашему вопросу, вы можете в основном положить свои проекты в один каталог с общими node_modules
подкаталогом и каждым require
вызова от любого из ваших каталогов проекта клиента будет загружать зависимость от этой общей node_modules
(если она существует и не переопределяется в каталоге клиента).
shared
├── node_modules
│ └── ...
├── shared_js
├── shared_scss
├── gulpfile.js
|
├── client-project-1
│ ├── client_js
│ ├── client_scss
│ └── gulpfile.js
|
├── client-project-2
├── client-project-3
└── client-project-n
Если вы симлинки shared_js
в shared/node_modules/shared_js
, клиентские проекты будут иметь возможность требовать их require('shared_js/...')
.
В качестве альтернативы вы можете установить общие зависимости globally в $HOME/.node_modules
или $NODE_PATH
, но это обескуражено.