パッケージバイナリ
Voltaは、Node.jsツール自体の管理に加えて、グローバルにインストールされたnpmパッケージの管理もサポートしています。このドキュメントでは、Voltaでパッケージを管理する方法について説明します。
グローバルパッケージのインストール
Voltaでは、通常のnpmコマンドを使用してグローバルパッケージをインストールできます:
bash
# グローバルパッケージをインストール
npm install -g @vue/cli
yarn global add create-react-app
Voltaは、これらのパッケージを現在アクティブなNodeおよびパッケージマネージャーのバージョンと関連付けます。
パッケージの分離
Voltaの重要な特徴の一つは、パッケージの分離です。異なるNodeバージョンでインストールされたパッケージは分離されて管理されます:
bash
# Node 16でeslintをインストール
volta install node@16
npm install -g eslint
# Node 18に切り替え
volta install node@18
npm install -g eslint # これは別のインストールです
# Node 16に戻る
volta install node@16
eslint --version # Node 16用のeslintが利用可能
パッケージの固定
特定のパッケージバージョンをプロジェクトに固定することもできます:
bash
# プロジェクトディレクトリで
volta pin node@16
npm install -g @angular/cli@14
# package.jsonに記録される
これにより、そのプロジェクトで作業する際は常に指定されたバージョンのツールが使用されます。
パッケージの一覧表示
インストールされているグローバルパッケージを確認するには:
bash
# 現在のツールチェーンでインストールされたパッケージを表示
npm list -g --depth=0
# Voltaで管理されているすべてのツールを表示
volta list all
パッケージの更新
グローバルパッケージを更新するには:
bash
# 特定のパッケージを更新
npm update -g eslint
# すべてのグローバルパッケージを更新
npm update -g
# または、特定のバージョンに更新
npm install -g eslint@8.0.0
パッケージのアンインストール
グローバルパッケージをアンインストールするには:
bash
# npmを使用
npm uninstall -g package-name
# yarnを使用
yarn global remove package-name
複数バージョンの管理
同じパッケージの複数バージョンを異なるNodeバージョンで管理できます:
bash
# Node 14でwebpack 4をインストール
volta install node@14
npm install -g webpack@4
# Node 16でwebpack 5をインストール
volta install node@16
npm install -g webpack@5
# プロジェクトに応じて適切なバージョンが使用される
実践的な例
開発環境の設定
bash
# メインの開発ツールをインストール
volta install node@18 npm@9
# よく使用するグローバルツールをインストール
npm install -g \
@vue/cli \
create-react-app \
@angular/cli \
typescript \
eslint \
prettier \
nodemon
プロジェクト固有の設定
bash
# プロジェクトディレクトリで
volta pin node@16 npm@8
# プロジェクト固有のツールをインストール
npm install -g @nestjs/cli@9.0.0
チーム開発での統一
json
// package.json
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
},
"scripts": {
"setup": "npm install && npm run install-tools",
"install-tools": "npm install -g eslint@8.0.0 prettier@2.5.0"
}
}
ベストプラクティス
1. バージョンの明示
グローバルパッケージをインストールする際は、特定のバージョンを指定することを推奨します:
bash
# 良い例
npm install -g eslint@8.0.0
# 避けるべき例
npm install -g eslint
2. プロジェクト設定の文書化
チームで作業する場合、必要なグローバルツールを文書化します:
markdown
## 開発環境セットアップ
1. Voltaをインストール
2. プロジェクトディレクトリでNodeとnpmのバージョンを固定:
```bash
volta pin node@16 npm@8
- 必要なグローバルツールをインストール:bash
npm install -g eslint@8.0.0 prettier@2.5.0
### 3. CI/CDでの考慮事項
CI/CD環境では、必要なグローバルパッケージを明示的にインストールします:
```yaml
# .github/workflows/test.yml
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install Volta
run: curl https://get.volta.sh | bash
- name: Install global tools
run: |
npm install -g eslint@8.0.0
npm install -g prettier@2.5.0
トラブルシューティング
パッケージが見つからない
bash
# パッケージのインストール場所を確認
npm list -g package-name
# Voltaの状態を確認
volta list
# PATHを確認
echo $PATH
権限エラー
bash
# Voltaホームディレクトリの権限を確認
ls -la ~/.volta
# 必要に応じて権限を修正
sudo chown -R $USER:$USER ~/.volta
古いパッケージの削除
bash
# 未使用のパッケージを削除
npm install -g npkill
npkill
# または手動で削除
rm -rf ~/.volta/tools/user/packages/package-name