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

时间:2018-03-02 16:04:36

标签: npm yarnpkg

我在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的嵌套依赖项而不是使用项目的版本?这会导致角度在应用程序中存在两次并且无法正常工作:

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。

2 个答案:

答案 0 :(得分:9)

您需要为此

使用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任何子角度依赖关系都将设置为1.5.11。更新下面的运行后

$ rm yarn.lock
$ yarn

答案 1 :(得分:1)

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

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

yarn add react17@npm:react@17