Вы абсолютно можете совместно использовать каталог node_modules среди проектов.
Из документации узла :
Если идентификатор модуля, переданный в require (), не является собственным модулем и не начинается с '/', '../' или './', тогда узел запускается в родительском каталоге текущего модуля и добавляет / node_modules и пытается загрузить модуль из этого места.
Если его там нет, он перемещается в родительский каталог и так далее, пока не будет достигнут корень файловой системы.
Например, если файл в '/home/ry/projects/foo.js' называется require ('bar.js'), то узел будет искать в следующих местах в таком порядке:
/home/ry/projects/node_modules/bar.js /home/ry/node_modules/bar.js /home/node_modules/bar.js /node_modules/bar.js
Так что просто поместите папку node_modules в каталог ваших проектов и вставьте любые модули, которые хотите. Просто требуйте их как обычно. Когда node не находит каталог node_modules в папке вашего проекта, он автоматически проверяет родительскую папку. Итак, сделайте вашу структуру каталогов такой:
-myProjects
--node_modules
--myproject1
---sub-project
--myproject2
Таким образом, даже зависимости вашего подпроекта могут опираться на ваш основной репозиторий node_modules.
Одним из недостатков этого способа является то, что вам придется создавать файл package.json вручную (если только кто-то не знает способ автоматизировать это с помощью grunt или чего-то еще). Когда вы устанавливаете свои пакеты и добавляете аргумент --save к npm install
команде, он автоматически добавляет его в раздел зависимостей или в ваш package.json, что удобно.
require
модуля d. В противном случае нет, официальной «центральной»node_modules
папки для использования не существуетrequire()
.