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

mar*_*kpw 10 npm yarnpkg

angular在1.5.11的依赖项中:

{
    "dependencies": {
        "angular": "1.5.11",
        "angular-foundation": "0.7.0"
    }
}
Run Code Online (Sandbox Code Playgroud)

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.

Tar*_*ani 12

您需要为此使用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"
    }
}
Run Code Online (Sandbox Code Playgroud)

这告诉yarn任何子角度依赖将被设置为1.5.11.更新下面的运行后

$ rm yarn.lock
$ yarn
Run Code Online (Sandbox Code Playgroud)

  • 通常不建议删除yarn.lock,特别是在大型/“旧”项目上。您链接的文档建议仅在之后运行“yarn install” (2认同)

小智 6

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

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

yarn add react17@npm:react@17

  • 请在您的答案中添加一些解释。 (5认同)
  • 解释在这里/sf/ask/1849021121/ (2认同)