Skip to content

Volta の理解

Volta の動作原理

Volta は、現在のディレクトリに基づいて適切なバージョンにルーティングするシムを作成することで、JavaScript コマンドラインツールを管理します。これにより、異なるプロジェクトが同じツールの異なるバージョンを使用できるようになり、追加の設定は不要です。

シムシステム

Volta をインストールすると、PATH に小さなシムのセットが追加されます:

  • node 用のシム
  • 各パッケージマネージャー(npmyarnpnpm など)用のシム
  • インストールした各グローバルパッケージ用のシム

これらのシムは小さな実行可能ファイルで、以下の方法で実行するツールの実際のバージョンを決定します:

  1. 固定されたツールバージョンを持つプロジェクト内にいるかチェック
  2. プロジェクト固有のバージョンが見つからない場合は、デフォルトバージョンを使用

プロジェクト固有バージョン

Volta はプロジェクトのツール要件を package.json ファイルの volta セクションに保存します:

json
{
  "volta": {
    "node": "16.15.1",
    "npm": "8.11.0"
  }
}

この設定を持つディレクトリでコマンドを実行すると、Volta は自動的にこれらの正確なバージョンを使用することを保証します。

デフォルトバージョン

固定バージョンのないプロジェクト外の場所では、Volta はデフォルトツールを使用します。これらは以下のコマンドで設定できます:

bash
volta install node@16.15.1
volta install npm@8.11.0

なぜ Volta を選ぶのか?

一貫した環境

Volta はプロジェクトで作業するすべての人が全く同じツールチェーンを使用することを保証し、「私のマシンでは動作する」問題を排除します。

ゼロオーバーヘッド

他のバージョンマネージャーとは異なり、Volta はプロジェクトを変更する際にバージョンを切り替えるための追加コマンドを必要としません。ファイルシステムを移動する際に自動的に発生します。

高速パフォーマンス

Rust で構築された Volta は速度を考慮して設計されています。そのシムアーキテクチャは JavaScript ツールを実行する際の最小限のオーバーヘッドを意味します。

シームレス統合

Volta は既存の JavaScript 開発ワークフローと連携し、習慣やプロセスを変更する必要がありません。

一般的なワークフロー

新しいプロジェクトの開始

bash
# ディレクトリを作成してパッケージを設定
mkdir my-project && cd my-project
npm init -y

# Node.js と npm のバージョンを固定
volta pin node@16
volta pin npm@8

# 依存関係をインストール
npm install express

既存プロジェクトへの貢献

bash
# リポジトリをクローン
git clone https://github.com/example/project.git
cd project

# プロジェクトが package.json に volta 設定を持っている場合、
# 自動的に正しいツールが使用される

# ない場合は、追加できる
volta pin node@14

グローバルツールのインストール

bash
# グローバルパッケージをインストール
volta install typescript

# どこからでも使用可能
tsc --version