Вроде. Каталог node_modules
на самом деле не является функцией npm
, а является функцией node.js
.
Как node.js использует node_modules
.
Когда вам требуется модуль node.js будет искать каталог node_modules
от текущего каталога вверх. Это означает, что если он не может найти его в текущем каталоге (который на самом деле может быть подкаталогом вашего проекта, а не каталогом вашего проекта), он будет искать его в родительском каталоге, а затем родительский родительский элемент до вашего root каталог.
Например, у вас может быть такая структура проекта:
/node_modules <-------------------- modules available to all projects
/code
/project_A
/node_modules <------ modules available to project A
/lib
/node_modules <-- modules available to the lib directory
/project_B
/node_modules <------ modules available to project B
Таким образом, у вас могут быть некоторые модули, совместно используемые несколькими проектами, а некоторые модули, специфичные для проекта c и даже некоторые модули, которые доступны только для некоторых файлов в вашем проекте.
Как npm обрабатывает node_modules
Обратите внимание, что npm
имеет только одну интерпретацию node_modules
. Он управляет только node_modules
в каталоге вашего проекта. В частности, каталог, содержащий файл package.json
.
Так что да, вы можете это сделать, но npm
не поймет, что вы делаете, и ваш package.json
будет содержать неполные зависимости. Я бы не рекомендовал делать это с проектами с участием нескольких разработчиков, потому что это будет больше похоже на неправильно настроенную среду разработки - в основном другие будут думать, что это ошибка. Однако я лично использовал такие структуры для личных проектов, где меня не волнует мой файл package.json
.