Lerna脚手架搭建(五):Lerna 发布流程

本文最后更新于:2024年12月10日 下午

一、发布前工作 👈

🟠 执行 lerna version,发现报错这里是因为代码尚未提交到 git;

🟠 执行 lerna changed,输出有两个 package 有变更;

🟠 执行 lerna diff 发现报错,原因与上个报错一样;

🟠 执行 git add .git commit -m “init” 提交代码

🟠 再次执行 lerna version,发现报错这是由于远程仓库还没有配置;

🟠 再次执行 lerna diff 发现没有变更,因为上面我们已经提交了变更,我们可以修改一下代码再次执行查看输出。

二、创建 git 仓库 👈

在这里我用的是自己的 gitea,大家可以参考创建到其它代码托管平台。

🟠 创建 xuven-cli-dev 仓库;

🟠 复制上面仓库的克隆地址,在我们项目下添加远程仓库地址,执行:git remote add origin https://git.xuven.xyz/xuven/xuven-cli-dev.git

🟠 执行 git remote -v 查看远程仓库信息;

🟠 执行 git push 发现需要指定 origin 上游分支;

🟠 执行 git push origin master --set-upstream,推送成功。

三、lerna 发布 👈

🟠 执行 lerna version 升级版本号
可以看到当前的版本号为 1.0.0,选择 Patch(1.0.1),回车;
提示是否创建版本,由于我们的 1.0.0 还没有发布,所以这里选 n,回车。

🟠 执行 lerna publish 进行发布
选择版本号,这里选 Patch(1.0.1),回车,询问是否发布,输入 y,回车,发现报错
这是因为我们在发布的时候 lerna 会自动执行 git add 命令来添加 package.json 和 package-lock.json,而我们在 .gitignore 文件里忽略了 package-lock.json,所以报错。

🟠 修改 .gitignore 内容,删除 package-lock.json 项
我们发现项目根目录下生成了一个日志文件 lerna-debug.log,我们把这个文件加入到 .gitignore 忽略列表中。

🟠 再次执行 git 推送:git add .git commit -m “edit .gitignore”git push

🟠 再次执行 lerna publish 进行发布
选择版本号,这里选 Patch(1.0.2),回车,询问是否发布,输入 y,回车,发现报错
这是因为我们并未登录 npmjs。

🟠 执行 npm login 进行登录,输入用户名和密码;

🟠 再次执行 lerna publish 进行发布
提示成功,由于我们当前并没有变更,因此 npmjs 上并没有看到我们的 package;

🟠 在 core 下创建 bin 目录,然后在 bin 目录下创建 index.js 文件,文件内容如下:

1
2
3
#!/usr/bin/env node

console.log("hello xuven-cli");

🟠 在 core/package.json 添加 bin 属性,保存:

1
2
3
"bin": {
"xuven-cli-dev": "bin/index.js"
},

🟠 再次执行 git 推送:git add .git commit -m “add command”git push

🟠 再次执行 lerna publish 进行发布
选择版本号,这里选 Patch(1.0.3),回车,询问是否发布,输入 y,回车,发现未登录报错;查看输出的警告信息,我们发现解决这个问题,我们可以在项目根目录创建 LICENSE.md 文件。然后我们打开根目录的 lerna.json 更改版本号为 1.0.0,同样,在 core 和 utils 的 package.json 内也把版本号改为 1.0.0。

🟠 再次执行 git 推送:git add .git commit -m “add LICENSE.mdgit push

🟠 再次执行 lerna publish 进行发布
择版本号,这里选 Patch(1.0.1),回车,询问是否发布,输入 y,回车,还是发现未登录报错;这是由于我们使用了 @**/** 的形式发布包,这样默认会使用私有仓库。

🟠 为了解决问题,我们需要在 core 和 utils 内的 package.json 添加一下属性,使其成为公共仓库:

1
2
3
"publishConfig": {
"access": "public"
}

🟠 再次执行 git 推送:git add .git commit -m “edit publishConfig”git push

🟠 再次执行 lerna publish 进行发布
还是报错,报错信息如下:
原因是由于我们之前执行过几次的发布,git 仓库已经打上了对应的版本号,所以标签 ^1.0.2 已存在。

🟠 把之前在 core/package.json 和 utils/package.json 还有 lerna.json 中的 1.0.2 重新改为 1.0.3;

🟠 再次执行 git 推送:git add .git commit -m “bump version”git push

🟠 再次执行 lerna publish 进行发布,两个包都推送成功了。
npmjs 上查看 packages:

可以看到,我们发布时遇到的问题不少,这里建议大家在发布早期就把这些问题解决,这样有利于后续的持续迭代。


Lerna脚手架搭建(五):Lerna 发布流程
https://blog.xuven.xyz/post/LernaReleaseProcess/
作者
Xuven Li
发布于
2022年3月30日
许可协议