Npm 如何在monorepository中使用Warn WorskSpace自动增加本地包的PeerDependence版本?

Npm 如何在monorepository中使用Warn WorskSpace自动增加本地包的PeerDependence版本?,npm,dependency-management,yarnpkg,semantic-versioning,lerna,Npm,Dependency Management,Yarnpkg,Semantic Versioning,Lerna,当运行lerna version或lerna publish时,它会在纱线工作区中碰撞所有软件包的版本,并更新相关的devdependency,但在peerDependencies中保持不变的版本,因此软件包引用旧的和不正确的版本,从而破坏功能 示例: 包A,B和C其中B和C取决于A。所有版本都有0.0.1。 根据对工作区的建议,依赖项指向确切的版本,如: "peerDependencies": { "A": "0.0.1" }, "devDependencies": {

当运行
lerna version
lerna publish
时,它会在纱线工作区中碰撞所有软件包的版本,并更新相关的
devdependency
,但在
peerDependencies
中保持不变的版本,因此软件包引用旧的和不正确的版本,从而破坏功能

示例:

A
B
C
其中
B
C
取决于
A
。所有版本都有
0.0.1
。 根据对工作区的建议,依赖项指向确切的版本,如:

  "peerDependencies": {
    "A": "0.0.1"
  },
  "devDependencies": {
    "A": "0.0.1"
  },
更改
A
,修改
B
以反映
A
中的更改

现在,如果我们运行
lerna publish
,我们将获得版本为
0.0.2
B
C
的所有3个软件包,请继续引用
A@0.0.1
。这会中断
B
的功能,因为
B
中的修改取决于
A
中的更改,该更改仅存在于
0.0.2
中。所以
B
package.json
开始看起来像:

  "peerDependencies": {
    "A": "0.0.1"
  },
  "devDependencies": {
    "A": "0.0.2"
  },
  "peerDependencies": {
    "A": "0.0.2"
  },
  "devDependencies": {
    "A": "0.0.2"
  },
虽然我们希望它看起来像:

  "peerDependencies": {
    "A": "0.0.1"
  },
  "devDependencies": {
    "A": "0.0.2"
  },
  "peerDependencies": {
    "A": "0.0.2"
  },
  "devDependencies": {
    "A": "0.0.2"
  },
当存在大量依赖于a的包时,或者存在依赖关系的层次结构时(例如,
C
=>[
a
,{
B
=>
a
}]),很难手动更新所有依赖关系

可能是出于设计:(但我们需要一种解决方法)

因此,Lerna似乎能够分析依赖关系树并更新
devDependencies
,但对于
peerDependencies
而言,它并不是有意这样做的

但当我们确实需要更新
peerDependencies
时,我很难找到一个推荐的正确方法

那么,我们如何解决这个问题呢

供参考:

  • 问题库:
  • 问题: