# 安装
安装并查看 lerna 版本
1 | npx lerna -v |
# 创建项目并初始化 lerna 项目
1 | mkdir new-lerna-demo |
# 创建 a 包
1 | lerna create a |
一路回车,将 packages/a/package.json 的 name 字段改成 @gamejoye/a,设置 type 为 “module”,修改 packages/a/lib/a.js 的内容为 ESM 模块的形式
# 为 a 包添加依赖
给 a 包添加依赖,这里以 loadsh 为例子
1 | npm i lodash -w @gamejoye/a |
# 创建 b 包
1 | lerna create b |
一路回车,将 packages/b/package.json 的 name 字段改成 @gamejoye/b,设置 type 为 “module”,修改 packages/b/lib/b.js 的内容为 ESM 模块的形式
# 创建 cli 包
1 | npx lerna create cli --access public --bin --es-module |
这里标志为 public,并配置 bin 字段提供一个命令行命令,并配置为 ESM 模块形式
修改 bin/cli:
1 |
|
修改 src/cli
1 | import factory from 'yargs/yargs'; |
# 同步依赖
更新所有 workspaces 中的依赖
1 | npm i -ws |
# 配置 root/package.json
添加
1 | { |
# 运行命令
这行命令会输出 10.5.0 代表 npm 的版本
1 | npm run lerna-cli -v |
# 打通包之间的关系
要在 cli 中使用 a 包和 b 包
1 | npm i @gamejoye/a @gamejoye/b -w packages/cli |
改造 bin/cli
1 |
|
运行如下命令会输出
1 | npm run lerna-cli |
Hello from a
Hello from b
# 发布版本
lerna version 会让你选择下一个版本号,并自动更新子包下 package.json 的 version 字段,同时进行 push 到远程并打上 tag
1 | git add . |
lerna publish