版本和发布
Lerna 可以增加您的包的版本,并将包发布到 NPM,并提供各种选项以确保可以适应任何工作流。
为了展示 Lerna 是如何做到的,我们将查看此仓库。
如果您通过实践学习更好,请克隆仓库并跟随。
该仓库包含三个包或项目:
header
(React 组件库)footer
(React 组件库)remixapp
(使用 Remix 框架编写的应用,依赖于header
和footer
)
我们将发布 header
和 footer
包。
发布仅部分项目是很常见的。有些项目可能是私有的(例如,仅用于测试),有些可能是演示应用。在这个仓库中,
remixapp
并不是"私有的",意味着不希望人们看到源文件,而是使用"private": true
设置以避免发布到 NPM。
版本控制
Lerna 提供了 version
命令,允许您增加包的版本号,提交更改并相应地添加标签。
lerna version --no-private
您将得到以下输出:
lerna notice cli v5.1.2
lerna info current version 1.0.0
lerna info Assuming all packages changed
? 选择一个新版本(当前为 1.0.0) (使用箭头键)
❯ 补丁版本 (1.0.1)
次要版本 (1.1.0)
主要版本 (2.0.0)
预补丁版本 (1.0.1-alpha.0)
预次要版本 (1.1.0-alpha.0)
预主要版本 (2.0.0-alpha.0)
自定义预发布版本
自定义版本
信息
请注意,通过传递 --no-private
我们排除了在其 package.json
文件中标记为 private
的所有包。
Lerna 检测当前包,识别当前版本并提出下一个版本供选择。请注意,您也可以直接传递语义版本增量,如 lerna version 1.0.0
。更多详细信息请参见版本文档。选择给定版本后,Lerna 会使用版本号更新 package.json
,提交更改,添加相应的版本标签(例如 v1.0.0
)并将提交和标签推送到远程仓库。
packages/footer/package.json
{
"name": "footer",
"version": "1.0.1",
"main": "dist/index.js",
...
}
请注意,上述操作不会将包推送到任何 NPM 仓库。如果我们希望 Lerna 也负责发布过程,可以改用 lerna publish
。
信息
Lerna 使用 lerna.json
中的 version
属性来确定当前使用的版本