我有几个使用通用核心代码库的项目。该核心位于子目录中,并定义了它自己的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表现那样,安装在两个不同的目录中。我认为,理解这也会解决另一个问题。