Lerna
https://juejin.cn/post/6844903918279852046#heading-8 比较全的使用方式
jest 与 lerna 一起使用
https://github.com/facebook/jest/issues/3112
因为内联模块,所以需要先建立链接,容易忘记。
一般先 lerna build,之后lerna boostrap。出了问题可以先learn clean。
这辈子都不会被实现的remove
https://github.com/lerna/lerna/issues/1886
lerna 没有 remove,所以只能这样模拟
lerna exec 'yarn remove @xx/xx' --scope=@xx/xx
add
内联dev
lerna add @xx/xx --scope=@xx/xx --dev
更新依赖,并修改package.json
https://juejin.cn/post/6844903918279852046#heading-14
yarn workspace @xx/xx add eslint-config-prettier@latest
3.1.3 安装|删除依赖
- 普通项目: 通过yarn add和yarn remove即可简单姐解决依赖库的安装和删除问题
- monorepo: 一般分为三种场景
- 给某个package安装依赖:yarn workspace packageB add packageA 将packageA作为packageB的依赖进行安装
- 给所有的package安装依赖: 使用yarn workspaces add lodash 给所有的package安装依赖
- 给root 安装依赖:一般的公用的开发工具都是安装在root里,如typescript,我们使用yarn add -W -D typescript来给root安装依赖
对应的三种场景删除依赖如下
yarn workspace packageB remove packageA
yarn workspaces remove lodash //?没了
yarn remove -W -D typescript
或 lerna add,当然没有remove
lerna add @xxx/xxx --dev --scope=@xxx/xxx
publish 最优解
publish 前保证 git 缓冲区空。
自行修改 package.json 中的 version(需尽量遵守 semver),然后 commit,commit 使用 chore 标识,或 chore(release) 然后 push。
不使用 默认的 lerna publish,使用 lerna publish from-package,lerna 会检测到版本号变更了的库。
lerna publish from-package
不出意外能够完成(出意外看下面👇)
lerna publish from-package
info cli using local version of lerna
lerna notice cli v3.22.1
lerna info versioning independent
lerna info publish rooted leaf detected, skipping synthetic root lifecycles
Found 1 package to publish:
- @xxx/xxx => 0.3.0
? Are you sure you want to publish these packages? Yes
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna WARN ENOLICENSE Package @yirga/prelints is missing a license.
lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository.
lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance.
lerna success published @xxx/xxx 0.3.0
lerna notice
lerna notice 📦 @yirga/prelints@0.3.0
lerna notice === Tarball Contents ===
// 。。。
lerna success published 1 package
publish 失败
https://github.com/lerna/lerna/issues/455#issuecomment-792821661