关于lerna:Lerna-多包存储管理工具
lerna最近在看vue-cli的源码局部,留神到这一个仓库下保护了多个package,很好奇他是如何在一个repo中治理这些package的。 咱们组当初也在应用组件库的形式保护我的项目间共用的业务代码。有两个组件库,存在依赖的关系,目前联调是通过npm link的形式,性能并不好,时常呈现卡顿的问题。加上前一段时间组内分享vue3也提到了lerna,于是便决定认真的调研一下这个工具,为接下里的组件库优化助力。 lerna的文档还是很具体的,因为全是英文的,思考到浏览问题,这里我先是本人跑了几个demo,而后做了中文翻译。后续我会出一篇专门的lerna实战篇 demo lerna 是干什么的?Lerna 是一个工具,它优化了应用 git 和 npm 治理多包存储库的工作流。 背景1.将一个大的 package 宰割成一些小的 packcage 便于分享,调试 2.在多个 git 仓库中更改容易变得凌乱且难以跟踪 3.在多个 git 仓库中保护测试繁琐 两种工作模式Fixed/Locked mode (default)vue,babel 都是用这种,在 publish 的时候,所有的包版本都会更新,并且包的版本都是统一的,版本号保护在 lerna.jon 的 version 中 Independent modelerna init --independent独立模式,每个 package 都能够有本人的版本号。版本号保护在各自 package.json 的 version 中。每次公布前都会提醒曾经更改的包,以及倡议的版本号或者自定义版本号。这种形式绝对第一种来说,更灵便 初始化我的项目npm install -g lerna // 这里是全局装置,也能够装置为我的项目开发依赖,应用全局不便前期应用命令行mkdir lerna-repocd lerna-repolerna init // 初始化一个lerna我的项目构造,如果心愿各个包应用独自版本号能够加 -i | --independent 规范的 lerna 目录构造每个独自的包下都有一个 package.json 文件如果包名是带 scope 的,例如@test/lerna,package.json 中,必须配置"publishConfig": {"access": "public"}my-lerna-repo/ package.json lerna.json LICENSE packages/ package-1/ package.json package-2/ package.json启用 yarn Workspaces (强烈建议)Workspaces can only be enabled in private projects. ...