我有几个使用公共核心代码库的项目。该核心位于子目录中,并定义了它自己的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.
删除锁文件有帮助,但不是一个好的解决方案。我运行的版本是:node 8.11,npm 5.6.0
我想知道为什么npm会这样,安装在两个不同的目录中。我认为,理解这一点也能解决另一个问题。