monorepo管理多包之 lernajs开发工具

161 阅读1分钟

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 清空包远程仓库