MonorepoとProject References
ワークスペース型のmonorepoを作成し、TypeScriptのProject Referencesを接続して、高速な増分ビルドと整理されたパッケージ間の型を実現します
「MonorepoとProject References」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン1/1です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全1レッスンが含まれています。
はじめに
目標:規模を拡大できるモノレポを構成します。ワークスペースを宣言し、Project References を追加して、tsc -b で増分出力をビルドします。
- pnpm/yarn ワークスペース
- コンポジットプロジェクト
- 共有型
ワークスペースの構成
シンプルな2パッケージ構成です。shared(ライブラリ)とapp(sharedに依存)で構成されます。ワークスペースによってローカルパッケージがリンクされます。
# folder structure (for reference)
/monorepo
package.json
tsconfig.base.json
packages/
shared/
src/index.ts
package.json
tsconfig.json
app/
src/index.ts
package.json
tsconfig.jsonルートのワークスペース
ワークスペースを宣言すると、パッケージマネージャーによってローカル依存関係がリンクされます。TSのビルドモードを使用するbuild/cleanスクリプトを追加します。
// package.json (root)
{
"name": "monorepo",
"private": true,
"workspaces": ["packages/*"],
"scripts": {
"build": "tsc -b packages/*",
"clean": "tsc -b packages/* --clean"
}
}shared パッケージ
ライブラリをcompositeプロジェクトとして設定します。依存側がすばやく型チェックできるように、宣言ファイルを生成します。
// packages/shared/tsconfig.json
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
"declaration": true,
"composite": true
},
"include": ["src"]
}
// packages/shared/src/index.ts
export interface User { id: string; name: string }
export const hello = (u: User) => `Hello, ${u.name}`app パッケージ + refs
sharedに依存するためのreferencesエントリを追加します。ビルダーは最初にsharedをコンパイルし、その後にappをコンパイルします。
// packages/app/tsconfig.json
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src",
"composite": true
},
"references": [
{ "path": "../shared" }
],
"include": ["src"]
}
// packages/app/src/index.ts
import { hello } from "shared"
console.log(hello({ id: "u1", name: "Ada" }))基本設定とヒント
ヒント:
- 共通のコンパイラーオプション用に
tsconfig.base.jsonを作成します。 - パッケージ名に対応する
pathsマッピングを使用します。 - ローカル開発をインクリメンタルに行うには、
tsc -b --watchを実行します。
References の要件チェック
クイックチェック:参照される各パッケージには何を含める必要がありますか?
まとめ
まとめ:ワークスペースによってローカルパッケージがリンクされます。Project References(composite + references)によって、高速でインクリメンタルなtsc -bビルドと、パッケージ間で信頼できる型チェックが可能になります。
よくある質問
「MonorepoとProject References」レッスンは無料ですか?
はい。「MonorepoとProject References」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全1レッスンが含まれています。
「MonorepoとProject References」で何を学びますか?
ワークスペース型のmonorepoを作成し、TypeScriptのProject Referencesを接続して、高速な増分ビルドと整理されたパッケージ間の型を実現します ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/1です。
「MonorepoとProject References」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。