2015-09-17 2 views
0

Можно ли использовать зависимости gulp для нескольких проектов вместо того, чтобы иметь их в каждой папке проекта (как и для дефолта)?Централизованные общие зависимости к gulp для нескольких проектов?

Это то, что я стремлюсь к каждому клиенту (проект будет иметь ту же структуру):

/shared 
node_modules 
shared_scss 
shared_js 
gulpfile.js 

/client-project-1 
client_scss 
client_js 
gulpfile.js 

/client-project-2 
/client-project-3 
/client-project-n 

ответ

1

зависимости в раздел 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, но это обескуражено.

Смежные вопросы