モノレポセットアップで TypeScript を使用する方法
モノレポ設定により、複数のパッケージまたはプロジェクトを単一のリポジトリで管理できます。TypeScript では、この設定は、異なるパッケージ間で型、インターフェース、さらにはユーティリティを共有する場合に特に強力です。このガイドでは、モノレポ環境で TypeScript を設定する方法について説明します。
1. モノレポの設定
モノレポを設定するには、npm
ワークスペースや yarn
ワークスペースなどのツールを使用できます。これらのツールを使用すると、同じリポジトリ内の複数のパッケージを管理し、プロジェクト間でコードを簡単に共有できます。
1.1 モノレポの初期化
まず、モノレポ用の新しいフォルダーを作成し、npm
または yarn
で初期化します。
mkdir my-monorepo
cd my-monorepo
npm init -y
次に、package.json
でワークスペースを構成します。
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
]
}
この設定により、npm または yarn に、すべてのパッケージが packages
フォルダー内に存在することが伝えられます。
2. モノレポへのパッケージの追加
モノレポに 2 つのパッケージを作成します。この例では、再利用可能なコード用の shared
パッケージと、フロントエンド アプリケーション用の web-app
パッケージを作成します。
mkdir -p packages/shared
mkdir -p packages/web-app
各パッケージ内で、package.json
を初期化します。
cd packages/shared
npm init -y
cd ../web-app
npm init -y
3. モノレポにTypeScriptを追加する
次に、TypeScript を設定します。モノレポのルートに TypeScript と必要な依存関係をインストールします。
npm install typescript --save-dev
ルートレベルの tsconfig.json
を作成して、モノレポ全体の TypeScript 構成を定義します。
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": ["packages/*/src"]
},
"composite": true,
"declaration": true,
"outDir": "dist",
"rootDir": ".",
"skipLibCheck": true,
"module": "ESNext",
"target": "ES6",
"moduleResolution": "node"
},
"include": ["packages/*"]
}
ここで重要なのは paths
オプションです。これにより、TypeScript はモノレポ内のさまざまなパッケージからのインポートを理解できるようになります。
4. 各パッケージでの TypeScript の設定
各パッケージがモノレポで適切に動作するには、独自の tsconfig.json
が必要です。以下は shared
パッケージの構成例です。
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}
web-app
パッケージの場合:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist"
},
"include": ["src"]
}
これで、各パッケージで TypeScript が使用できるようになり、ルートの tsconfig.json
から構成が共有されるようになりました。
5. パッケージにTypeScriptコードを追加する
両方のパッケージにサンプルの TypeScript コードを追加してみましょう。 shared
パッケージで、 src
フォルダーを作成し、TypeScript ファイルを追加します。
mkdir -p packages/shared/src
touch packages/shared/src/index.ts
index.ts
で、単純な関数をエクスポートします。
export const greet = (name: string): string => {
return `Hello, ${name}!`;
}
web-app
パッケージに、src
フォルダーと index.ts
ファイルを作成します。
mkdir -p packages/web-app/src
touch packages/web-app/src/index.ts
次に、共有関数をインポートします。
import { greet } from 'shared';
console.log(greet('TypeScript Monorepo'));
6. モノレポの構築
モノレポ内のすべての TypeScript コードをコンパイルするには、TypeScript コンパイラを使用する必要があります。モノレポのルートで、次のコマンドを実行します。
npx tsc --build
このコマンドは、それぞれの tsconfig.json
ファイルに従ってすべてのパッケージをコンパイルします。
結論
このガイドでは、モノレポで TypeScript を設定して使用する方法について説明しました。モノレポ構造でコードを整理すると、複数のパッケージ間でコードを簡単に共有でき、開発プロセスを効率化できます。TypeScript の強力な型指定とプロジェクト参照により、この設定は大規模なアプリケーションや共有ライブラリに最適です。