ワークスペースの設定⚓︎
ブランクプロジェクトの作成 で作成したルートプロジェクトとワークスペースについて、 追加で必要な設定をします。
ワークスペースの定義⚓︎
ワークスペースの名称は、ルートプロジェクトの package.json の workspaces
プロパティで定義し、この値はワークスペースの package.json の name
プロパティと一致している必要があります。 ブランクプロジェクトの作成 に従って初期設定した場合は、自動的に構成されます。
package.json(ルート) | |
---|---|
1 2 3 |
|
package.json(ワークスペース) | |
---|---|
1 2 3 |
|
ルートプロジェクトの設定⚓︎
ルートプロジェクトの package.json に "type": "module"
と"private": "true"
を追加します。 CJS 形式のファイルを正しく読み込むために、 "type": "module"
は設定が必須です。 "private": "true"
は、誤ってルートプロジェクトが公開されることを防ぐため、設定を推奨します。
package.json(ルート) | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
スクリプトの登録⚓︎
ルートプロジェクトの package.json にスクリプトを登録します。 -w
オプションでワークスペース名を指定することで、指定したワークスペースの package.json に存在するスクリプトを実行できます。 設定例を下記に示します。
package.json(ルート) | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
パッケージの依存関係の管理⚓︎
パッケージのバージョンは、ルートプロジェクトの package-lock.json で管理されます。各ワークスペースには package-lock.json は作成されません。 パッケージのインストール・バージョン更新は、 npm workspaces を使用しない場合と同様に、各ワークスペースで npm install
を行います。 しかし、インストールしたパッケージの依存関係は、ルートプロジェクトの package-lock.json に記録されます。 また、各ワークスペースの package.json でバージョンを指定することで、ワークスペース間で異なるバージョンのパッケージを使用できます。
VS Code 上のワークスペースの設定⚓︎
ブランクプロジェクトの作成 時に、各ワークスペースの直下に .vscode フォルダーと設定ファイルが自動的に作成されます。 加えて、 VS Code で mono-repo 構成を扱う場合には、マルチルートワークスペース 機能が役立ちます。 追加でルートプロジェクトの直下に .code-workspaces ファイルを作成し、 npm workspaces のワークスペースの単位と、 VS Code のワークスペースの単位が対応するように設定します。 設定例を下記に示します。
サンプルアプリケーションの .code-workspace | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|