为什么npm在不同的目录中安装包?

时间:2018-05-30 06:04:59

标签: npm

我有几个使用通用核心代码库的项目。该核心位于子目录中,并定义了它自己的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中的所有软件包都已安装,但发生了两件奇怪的事情:

  1. 有些软件包安装在./core/node_modules而不是./node_modules

  2. 这仅适用于全新安装。如果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.
    
  3. 删除锁定文件会有所帮助,但这是一个糟糕的解决方案。我运行的版本是:节点8.11,npm 5.6.0

    我想知道为什么npm表现那样,安装在两个不同的目录中。我认为,理解这也会解决另一个问题。

0 个答案:

没有答案