lerna is dead
最近npmや、yarn周りでエ ラーが起きるのですが、 [email protected] (2021-02-10)がリリースされてからメンテナンスされていません。 lernaはyarn2以上では動かないことが多いらしく、yarnのバージョンを怖くて上げられないでいました。
メンテナーの方のTweetやプロファイルによると、OSSをやめてしまったらしいです。 (代替案を見ると、他がこぞって作っているので、やめたくなるのもわかる気がします。) なので、移行先を検討します。
Front-End Engineer, burned out OSS maintainer, and Oxford comma enthusiast. He/him. Black Lives Matter.
未だに多くのオープンソースがlernaを使っていますが、Issue #2703によると、 babelはforkして使ってたlernaをやめ、yarnで管理するらしいです。
TIL that babel replaced lerna with a custom yarn plugin to manage releases in PR babel/babel#12138 in Oct 2020.
- Lerna is largely unmaintained · Issue #2703 · lerna/lerna
- Is this project dead? · Issue #3062 · lerna/lerna
@changesets/cli vs @microsoft/rush vs @nrwl/workspace vs turbo
- changesets/changesets: 🦋 A way to manage your versioning and changelogs with a focus on monorepos
- microsoft/rushstack: Monorepo for tools developed by the Rush Stack community
- vercel/turborepo: The High-performance Build System for JavaScript & TypeScript Codebases
- nrwl/nx: Smart, Fast and Extensible Build System
npm workspace
yarn workspace や npm workspace のみで monorepo を管理する方法です。
changesets
Atlassian社謹製です。Issue #2703で言及されていました。 もとはAtrassionがsemantic-releaseからforkしたのを、lernaベースに作りかえるらしいです。
rushstack
Microsoft社謹製です。ChangeLogがいい感じになるらしいです。
turborepo
vercel社謹製です。いい感じにしてくれるらしいです。
npx create-turbo@latest
ではじめられます。
nx
nrwl社謹製です。ほかもいい感じにしてくれるらしいです。
npx create-nx-workspace@latest --preset=core
ではじめられます。npx add-nx-to-monorepo
で既存のrepoにも追加できます。
結論
monorepoにもtoolchainの栄枯盛衰が早くて悲しくなるので、
とりあえず lerna
ではじめ、
そのうちlernaが完全にダメになれば changesets
、
ものレポの規模が大きくなれば、Bazel
でそろえる形にしました。
Googleを信じろ、 Believe Google