ワークスペースの設定⚓︎
ブランクプロジェクトの作成 で作成したルートプロジェクトとワークスペースについて、 追加で必要な設定をします。
ワークスペースの定義⚓︎
ワークスペースの名称は、ルートプロジェクトの package.json の workspaces プロパティで定義し、この値はワークスペースの package.json の name プロパティと一致している必要があります。 ブランクプロジェクトの作成 に従って初期設定した場合は、自動的に構成されます。
| package.json(ルート) | |
|---|---|
1 2 3 | |
| package.json(ワークスペース) | |
|---|---|
1 2 3 | |
ルートプロジェクトの設定⚓︎
CI 時の Node.js や npm のバージョンを設定するために、ルートプロジェクトの package.json に "engines" を追加し、適切なバージョンを設定してください。 特別な理由がなければ、最新の LTS バージョンを指定します。 Node.js の LTS バージョンの情報については、 Node.js リリース を参照してください。
| package.json(ルート) | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
あわせて、ブランクプロジェクトの作成 で作成したワークスペース直下の package.json の "engines" に初期設定されているバージョンも、ルートプロジェクトと同じバージョンに設定してください。
| package.json(ワークスペース) | |
|---|---|
1 2 3 4 5 6 7 | |
設定ができたら、ルートプロジェクトの直下で npm install を行い、 package-lock.json が更新されることと、 "engines" のバージョンに関する警告が出力されないことを確認してください。
スクリプトの登録⚓︎
ルートプロジェクトの 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 | |