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

Posted

技术标签:

【中文标题】纱线安装同一个包的多个版本【英文标题】:Yarn installing multiple versions of the same package 【发布时间】:2018-08-10 21:23:43 【问题描述】:

我在 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。

【问题讨论】:

【参考方案1】:

您需要为此使用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

【讨论】:

【参考方案2】:

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

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

yarn add react17@npm:react@17

【讨论】:

请在您的回答中添加一些解释。 解释在这里***.com/questions/26414587/…

以上是关于纱线安装同一个包的多个版本的主要内容,如果未能解决你的问题,请参考以下文章

纱线未安装在 nvm 版本节点版本中

Python:如果安装了同一个包的多个egg版本,如何具体导入我需要的版本?

安装和导入 Python 包的多个版本

gitlab CI - 安装正确版本的纱线

纱线安装工作区中单个包的生产依赖项

如何使用终端升级纱线版本