У меня есть несколько проектов, которые используют общую базовую кодовую базу.Это ядро находится в подкаталоге и определяет его собственные зависимости npm.В проектах я хотел бы установить специфичные для проекта пакеты npm, а также зависимости ядра, которые выглядят так:
. / Package.json
{
"dependencies": {
"core": "file:./core",
"es6-promise": "~4.2.2",
"url-search-params-polyfill": "^2.0.3"
}
}
Когда я запускаю npm install
, все пакеты из ./package.json
и ./core/package.json
установлены, но происходят две странные вещи:
Некоторые пакеты устанавливаются в ./core/node_modules
вместо ./node_modules
Работает только при новой установке.Если package-lock.json
уже существует, выдается следующая ошибка:
npm ERR! path /proj/core/node_modules/jest-cli/node_modules/node-notifier
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/proj/core/node_modules/jest-cli/node_modules/node-notifier' -> '/proj/core/node_modules/jest-cli/node_modules/.node-notifier.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
Удаление файла блокировки помогает, но является плохим решением.Я запускаю следующие версии: узел 8.11, npm 5.6.0
Я хотел бы знать, почему npm ведет себя так, устанавливая в двух разных каталогах.Думаю, понимание этого решит и другого.