Ни один из этих подходов (npm link
или package.json
файловая зависимость) не работает, если локальный модуль имеет одноранговые зависимости, которые вы хотите установить только в области действия вашего проекта.
Например:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
В этом сценарии npm устанавливает myproject
node_modules/
следующим образом:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Когда узел загружает mymodule
и выполняет require('foo')
, узел разрешает символьную ссылку mymodule
, а затем ищет только в /local/mymodule/node_modules/
(и его предках) foo
, который он не находит. Вместо этого мы хотим, чтобы узел смотрел в /local/myproject/node_modules/
, поскольку именно там запускался наш проект и где foo
установлен.
Итак, нам либо нужен способ сообщить узлу , а не разрешить эту символическую ссылку при поиске foo
, либо нам нужен способ сообщить npm для установки копии mymodule
когда синтаксис зависимости от файла используется в package.json
. К сожалению, я не нашел способа сделать это: (