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
}]),很难手动更新所有依赖关系
可能是出于设计:(但我们需要一种解决方法)
devDependencies
,但对于peerDependencies
而言,它并不是有意这样做的
但当我们确实需要更新peerDependencies
时,我很难找到一个推荐的正确方法
那么,我们如何解决这个问题呢
供参考:
- 问题库:
- 问题: