Lerna
https://lerna.js.org/docs/getting-started
Lerna 是 TypeScript/JavaScript 的原始[monorepo 工具]
是一种工具,针对 使用 git 和 npm 管理多软件包代码仓库的工作流程进行优化
工具解决的问题:
monorepo概念模式的多项目包聚集在一起 存在node_module复
用及公用包名重复版本不同的的问题的解决方案。
lerna 在文档中说它解决了 3 个 monorepo 最大的问题:
- 不同包的自动 link
- 命令的按顺序执行
- 版本更新、自动 tag、发布
解决方式:
可以同时存在外层 node_modul和内层node_module
命令:
'lerna init'
作用:创建一个新的Lerna工作区,packages下的文件夹都是独立项目 package.json指定入口文件(main/)
完整的工作区文件参考: https://github.com/lerna/getting-started-example
lerna publish
lerna version
lerna bootstrap
lerna list
lerna changed
lerna diff
lerna exec
lerna run
lerna init
lerna add
lerna clean
lerna import
lerna link
lerna create
lerna info
lerna add-caching
lerna repair
lerna watch
lerna.json可配置
"useWorkspaces": true,
若开启了workspace功能,则lerna会将`package.json`中`workspaces`中所设置的项目路径作为`lerna packages`的路径,而不会使用`lerna.json`中的`packages`值
"npmClient": "yarn" //npm
使用 npm 还是yarn
packages/xxx/package.json配置
1.{
"dependencies": {
"header": "*",
"footer": "*"
}
}
header、foot模块 lerna视为已注册、可以直接引用
2.lerna add-caching 配置工作区 配置全部打包无变化产生缓存 避免无用重复打包全部
3.lerna run build 执行 packages下所以build命令
4.lerna publish --no-private 发布非私有的包
5.lerna unpublish @xxx@version 卸载固定版本包
6.lerna unpublish @xxx@version --force 清空包远程仓库