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,所以只能这样模拟

  1. lerna exec 'yarn remove @xx/xx' --scope=@xx/xx

add

内联dev

  1. lerna add @xx/xx --scope=@xx/xx --dev

更新依赖,并修改package.json

https://juejin.cn/post/6844903918279852046#heading-14

  1. 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安装依赖

对应的三种场景删除依赖如下

  1. yarn workspace packageB remove packageA
  2. yarn workspaces remove lodash //?没了
  3. yarn remove -W -D typescript

或 lerna add,当然没有remove

  1. 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 会检测到版本号变更了的库。

  1. lerna publish from-package

不出意外能够完成(出意外看下面👇)

  1. lerna publish from-package
  2. info cli using local version of lerna
  3. lerna notice cli v3.22.1
  4. lerna info versioning independent
  5. lerna info publish rooted leaf detected, skipping synthetic root lifecycles
  6. Found 1 package to publish:
  7. - @xxx/xxx => 0.3.0
  8. ? Are you sure you want to publish these packages? Yes
  9. lerna info publish Publishing packages to npm...
  10. lerna notice Skipping all user and access validation due to third-party registry
  11. lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
  12. lerna WARN ENOLICENSE Package @yirga/prelints is missing a license.
  13. lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository.
  14. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance.
  15. lerna success published @xxx/xxx 0.3.0
  16. lerna notice
  17. lerna notice 📦 @yirga/prelints@0.3.0
  18. lerna notice === Tarball Contents ===
  19. // 。。。
  20. lerna success published 1 package

publish 失败

https://github.com/lerna/lerna/issues/455#issuecomment-792821661
image.png