プロジェクトの管理
Volta はチームと協力者がプロジェクトで使用する開発ツールを標準化できるようにします。このガイドでは、Volta を使用してプロジェクトを効果的に管理する方法を説明します。
ツールバージョンの固定
Volta の最も重要なプロジェクト管理機能は、特定のツールバージョンをプロジェクトに固定する機能です:
Node.js の固定
プロジェクトが使用すべき Node.js バージョンを指定するには:
volta pin node@16.14.2
メジャーバージョンやマイナーバージョンに固定することもでき、Volta は最新の一致するバージョンを使用します:
volta pin node@16
パッケージマネージャーの固定
同様に、npm と Yarn のバージョンを固定できます:
volta pin npm@8.5.0
volta pin yarn@1.22.18
固定の動作原理
ツールバージョンを固定すると、Volta は:
- プロジェクトの
package.json
ファイルをvolta
セクションで更新 - この情報をバージョン管理にコミット
- チームの全員が同じバージョンを使用することを保証
package.json
内の volta
セクションは以下のようになります:
{
"name": "your-project",
"version": "1.0.0",
"volta": {
"node": "16.14.2",
"npm": "8.5.0",
"yarn": "1.22.18"
}
}
プロジェクトローカルツール
Volta はプロジェクトローカルツールインストールも尊重します:
ローカルパッケージバイナリの使用
プロジェクト内でパッケージをローカルインストールした場合:
npm install typescript
# または
yarn add typescript
Volta を通じてそれらのバイナリを実行できます:
volta run tsc
# または単純に
tsc
Volta はプロジェクトに固定された Node.js バージョンを使用してこれらのツールを実行します。
ワークスペースサポート
複数のプロジェクトを持つ monorepo セットアップでは、Volta は設定の継承をサポートします:
設定の拡張
複数のプロジェクトを持つワークスペースでは、ルート package.json
でベース設定を設定できます:
{
"volta": {
"node": "16.14.2",
"yarn": "1.22.18"
}
}
そして個別のプロジェクトの package.json
ファイルで、ルート設定を拡張します:
{
"volta": {
"extends": "../../package.json"
}
}
これにより、ワークスペース内のすべてのプロジェクト間で一貫したツールバージョンを維持できます。
プロジェクト管理のベストプラクティス
Volta を使用してプロジェクトを管理するための推奨事項:
1. 常にツールを固定
各プロジェクトで Node.js とパッケージマネージャーのバージョンを固定:
volta pin node
volta pin npm
# または
volta pin yarn
これにより、すべてのチームメンバーが一貫した開発環境を持つことが保証されます。
2. Volta 設定をコミット
package.json
内の volta
セクションを常にバージョン管理にコミットしてください。これが Volta がチームと設定を共有する方法です。
3. ツール要件を文書化
プロジェクトの README で、ツール管理に Volta を使用していることを記載:
## 開発
このプロジェクトは [Volta](https://volta.sh) を使用してツールの一貫性を保証しています。
Volta をインストールすると、自動的に適切なバージョンの Node.js と npm が使用されます。
4. CI/CD 統合を使用
継続的統合環境では、ビルドプロセスの一部として Volta のインストールを含める:
# GitHub Actions の例
- name: Install Volta
uses: volta-cli/action@v1
# Volta は自動的に適切な Node.js と npm/yarn バージョンを使用
- name: Install dependencies
run: npm install
5. プロジェクト間での標準化
複数のプロジェクトを持つ組織では、開発者がインストールする必要があるバージョン数を最小化するため、可能な限りツールバージョンを標準化してください。
Volta を使用してプロジェクトを効果的に管理することで、すべてのチームメンバーが一貫した開発環境を持ち、「私のマシンでは動作する」問題を減らし、コラボレーションをよりスムーズにできます。