纱线安装同一包的多个版本

Yarn installing multiple versions of the same package

我在 1.5.11 的依赖项中有 angular

{
    "dependencies": {
        "angular": "1.5.11",
        "angular-foundation": "0.7.0"
    }
}

angular-foundation恰好依赖于angular@>=1.3.0.

为什么 Yarn 安装 angular@1.6.9 作为 angular-foundation 的嵌套依赖而不是使用项目的版本?这会导致 angular 在应用程序中出现两次并且无法正常工作:

node_modules angular (1.5.11) angular-foundation (0.7.0) node_modules angular (1.6.9)

npm@5.6.0 不会发生这种情况 - npm 对应用程序和包都使用 1.5.11。

您需要为此使用 Yarn 个分辨率

https://yarnpkg.com/lang/en/docs/selective-version-resolutions/

所以你的package.json会变成这样

{
  "name": "depdencies",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",

    "dependencies": {
        "angular": "1.5.11",
        "angular-foundation": "0.7.0"
    },
    "resolutions": {
      "**/angular": "1.5.11"
    }
}

这告诉 yarn 任何子 angular 依赖项都将设置为 1.5.11。在下面 运行 更新后

$ rm yarn.lock
$ yarn

https://classic.yarnpkg.com/en/docs/cli/add/#toc-yarn-add-alias

yarn add <alias-package>@npm:<package>

yarn add react17@npm:react@17