删除重复的包以及yarn install --pure-lockfile和yarn install freeze-lockfile之间的区别

red*_*ble 5 package.json yarnpkg

我的package.json(react-native@0.55.4需要react@16.3.1)

  "dependencies": {
    "expo": "^27.0.1",
    "react": "16.3.1",
    "react-native": "~0.55.2",
    "react-navigation": "^2.0.1"
  }
Run Code Online (Sandbox Code Playgroud)

我的yarn.lock 文件中收到重复的包。

 react@16.3.1:
 version "16.3.1"
 resolved "https://registry.yarnpkg.com/react/-/react-16.3.1.tgz#4a2da433d471251c69b6033ada30e2ed1202cfd8"
 dependencies:
   fbjs "^0.8.16"
   loose-envify "^1.1.0"
   object-assign "^4.1.1"
   prop-types "^15.6.0"

react@^16.0.0:
  version "16.3.2"
  resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
  dependencies:
    fbjs "^0.8.16"
    loose-envify "^1.1.0"
    object-assign "^4.1.1"
    prop-types "^15.6.0"
Run Code Online (Sandbox Code Playgroud)

运行$ yarn remove react, 结果为.

 react@^16.0.0:
  version "16.3.2"
  resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
  dependencies:
    fbjs "^0.8.16"
    loose-envify "^1.1.0"
    object-assign "^4.1.1"
    prop-types "^15.6.0"
Run Code Online (Sandbox Code Playgroud)

如果我尝试再次运行它,我会得到error This module isn't specified in a manifest.

如何强制yarn删除所有react版本,以便我可以手动安装我需要的版本?

纱线安装只需添加两个包即可。

yarn install --pure-lockfileyarn install --frozen-lockfile解决这个问题吗?

red*_*ble 2

因此,根据研究(https://github.com/yarnpkg/yarn/issues/4379

冻结锁定文件,因为只有当您的锁定文件需要更改并且不一致时它才会失败。纯锁定文件您可能有一个几乎无用或非常不准确的锁定文件,但您仍然不会失败。Yarn 会简单地使用它计算出的内部分辨率。

最终我解决了重复的包如何使用“yarn”覆盖嵌套依赖项?。使用 package.json 中的分辨率

"resolutions": { "react": "16.3.1" }