zenn-editor
zenn-editor リポジトリで管理されているパッケージの開発ガイドです。
セットアップ
zenn-editor リポジトリは pnpm + Turborepo + lerna-lite によるモノレポ構成です。
それぞれのプロジェクトは ./packages に配置されています。
リポジトリをクローンし、プロジェクトルートで pnpm install を実行することで、./packages にある全てのプロジェクトの依存モジュールがインストールされます。
$ git clone https://github.com/zenn-dev/zenn-editor.git
# pnpmをcorepackでインストールする場合は以下を実行
$ corepack enable pnpm
$ pnpm install
pnpm のインストールには corepack を使用することを推奨します。
corepack を使用しない場合は、corepack のインストール方法を参照してインストールしてください。
同様に、テストやビルドもプロジェクトのルートで pnpm test、pnpm build を実行することで、./packages にある全てのプロジェクトに対して行うことができます。これは依存するモジュールに対するテストや動作確認をしたい時に便利です。
ブランチ
canary: 開発用のブランチです。新しいブランチを作る場合は、canaryブランチから作成します。canaryの最新はX.Y.Z-alpha.0のようなバージョン指定または@canaryでインストールすることができます。main: リリース用のブランチです。通常はcanaryブランチからmainブランチにマージします。mainの最新はX.Y.Zのようなバージョン指定または@latestでインストールすることができます。
リリース
canaryバージョンのリリース
canaryブランチにコミット(PRがマージ)されると、GitHub Actions によって自動的にビルドが実行され、X.Y.Z-alpha.0のようなバージョンがnpmにリリースされます。
mainバージョンのリリース
canaryブランチからmainブランチへのPRを作成します。releaseラベルを付けます。- PRがマージされると、GitHub Actions によって自動的にビルドが実行され、
X.Y.Zのようなバージョンがnpmにリリースされます。
Monorepo で使用しているライブラリ
zenn-editor では以下のライブラリを使用して、Monorepo 環境を構築しています。
pnpm
公式サイト: https://pnpm.io/ja/
npm、yarn などと同じパッケージマネージャーです。 シンボリックリンクを利用した独自構成で node_modules を管理することにより、高速で安全なパッケージ管理を可能とします。 zenn-editor では、workspace 機能によって Monorepo のパッケージを管理しています。
Turborepo
公式サイト: https://turbo.build/repo
管理している workspace を依存関係を考慮してコマンドを実行するツールです。 zenn-editor では、ビルドやテストなどを実行する時に使用しています。
lerna-lite
公式サイト: https://github.com/lerna-lite/lerna-lite
lerna から version と publish 機能だけを抜き出したバージョン管理ツールです。
基本的な使い方は lerna と一緒ですが、多くの Monorepo 機能はデフォルトでは含まれていないことに注意してください。
zenn-editor では、workspace をリリースする際に使用しています。