volta which
現在使用されているツールの実行可能ファイルのパスを表示します。
使用法
bash
volta which <バイナリ>
引数
<バイナリ>
パスを調べる実行可能ファイルの名前。
node
- Nodeの実行可能ファイルnpm
- npmの実行可能ファイルyarn
- Yarnの実行可能ファイルpnpm
- pnpmの実行可能ファイル- その他のグローバルインストールされたパッケージ
例
基本的な使用法
bash
# 現在のNodeの場所を表示
volta which node
# /Users/username/.volta/tools/image/node/18.17.0/bin/node
# 現在のnpmの場所を表示
volta which npm
# /Users/username/.volta/tools/image/node/18.17.0/bin/npm
# 現在のYarnの場所を表示
volta which yarn
# /Users/username/.volta/tools/image/yarn/1.22.19/bin/yarn
グローバルパッケージの確認
bash
# グローバルにインストールされたeslintの場所
volta which eslint
# /Users/username/.volta/tools/user/packages/eslint/8.45.0/bin/eslint
# TypeScriptコンパイラの場所
volta which tsc
# /Users/username/.volta/tools/user/packages/typescript/5.1.6/bin/tsc
# Vue CLIの場所
volta which vue
# /Users/username/.volta/tools/user/packages/@vue/cli/5.0.8/bin/vue
プロジェクト固有のツール
bash
# プロジェクトディレクトリで確認
cd my-project
# プロジェクトで固定されたNodeバージョンの確認
volta which node
# /Users/username/.volta/tools/image/node/16.14.2/bin/node
# 別のプロジェクトで確認
cd ../another-project
volta which node
# /Users/username/.volta/tools/image/node/18.17.0/bin/node
実践的な使用例
デバッグとトラブルシューティング
bash
# 現在使用されているツールバージョンを確認
echo "Node: $(volta which node)"
echo "npm: $(volta which npm)"
echo "Yarn: $(volta which yarn)"
# バージョン情報と組み合わせ
echo "Node $(node --version) at $(volta which node)"
echo "npm $(npm --version) at $(volta which npm)"
スクリプトでの活用
bash
#!/bin/bash
# check-tools.sh
echo "=== 現在のツール情報 ==="
for tool in node npm yarn; do
if command -v "$tool" >/dev/null 2>&1; then
echo "$tool: $(volta which "$tool")"
echo " バージョン: $("$tool" --version)"
else
echo "$tool: インストールされていません"
fi
echo
done
環境変数としての使用
bash
# 現在のNodeパスを環境変数に設定
export NODE_PATH=$(volta which node)
echo "Node path: $NODE_PATH"
# スクリプトで特定のバージョンを使用
VOLTA_NODE=$(volta which node)
$VOLTA_NODE --version
PATH の確認
Voltaシムとの比較
bash
# システムのwhichコマンドとの比較
which node
# /Users/username/.volta/bin/node (Voltaシム)
volta which node
# /Users/username/.volta/tools/image/node/18.17.0/bin/node (実際のバイナリ)
PATH の優先順位確認
bash
# PATHの内容を確認
echo $PATH | tr ':' '\n' | grep -E "(volta|node)"
# Voltaシムの場所
ls -la ~/.volta/bin/
# 実際のツールの場所
volta which node
エラーハンドリング
ツールが見つからない場合
bash
volta which nonexistent-tool
# Error: `nonexistent-tool` not found in PATH
# 条件付きで確認
if volta which eslint >/dev/null 2>&1; then
echo "ESLint found at: $(volta which eslint)"
else
echo "ESLint not installed"
fi
プロジェクト設定との不一致
bash
# package.jsonで固定されているが、インストールされていない場合
cd project-with-old-node
volta which node
# Error: Node version 14.21.3 is not installed
# 解決方法
volta install node@14.21.3
volta which node
# /Users/username/.volta/tools/image/node/14.21.3/bin/node
詳細情報の取得
シンボリックリンクの解決
bash
# 実際のファイルパスを確認
realpath "$(volta which node)"
# macOSの場合
greadlink -f "$(volta which node)"
# または
ls -la "$(volta which node)"
ファイル情報の表示
bash
# ファイルの詳細情報
ls -la "$(volta which node)"
file "$(volta which node)"
# バイナリの情報
"$(volta which node)" --version
CI/CD での活用
環境確認スクリプト
bash
#!/bin/bash
# ci-check-tools.sh
echo "=== CI環境でのツール確認 ==="
tools=("node" "npm" "yarn")
for tool in "${tools[@]}"; do
echo "--- $tool ---"
echo "Path: $(volta which "$tool" 2>/dev/null || echo "Not found")"
echo "Version: $("$tool" --version 2>/dev/null || echo "N/A")"
echo
done
GitHub Actions
yaml
name: Tool Check
on: [push]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Volta
run: |
curl https://get.volta.sh | bash
echo "$HOME/.volta/bin" >> $GITHUB_PATH
- name: Check tool paths
run: |
echo "Node: $(volta which node)"
echo "npm: $(volta which npm)"
- name: Verify versions match project
run: |
expected_node=$(jq -r '.volta.node' package.json)
actual_node=$(node --version | sed 's/^v//')
echo "Expected Node: $expected_node"
echo "Actual Node: $actual_node"
パフォーマンス考慮事項
キャッシュの活用
bash
# 頻繁に確認する場合はキャッシュ
NODE_BINARY=$(volta which node)
NPM_BINARY=$(volta which npm)
# 複数回使用
$NODE_BINARY --version
$NPM_BINARY --version
バッチ処理
bash
# 複数ツールを一度に確認
{
echo "node: $(volta which node)"
echo "npm: $(volta which npm)"
echo "yarn: $(volta which yarn)"
} > tool-paths.txt
関連コマンド
volta list
- インストールされているツールの確認volta run
- 特定のツールバージョンでコマンドを実行volta pin
- プロジェクトのツールバージョンを固定
ベストプラクティス
1. デバッグ時の確認
bash
# 問題が発生した際の標準チェック
echo "=== Volta which debug ==="
echo "PWD: $PWD"
echo "Node: $(volta which node 2>&1)"
echo "npm: $(volta which npm 2>&1)"
echo "PATH: $PATH"
2. スクリプトでの安全な使用
bash
# エラーハンドリング付き
get_tool_path() {
local tool=$1
local path
path=$(volta which "$tool" 2>/dev/null)
if [ $? -eq 0 ]; then
echo "$path"
else
echo "Error: $tool not found" >&2
return 1
fi
}
# 使用例
if NODE_PATH=$(get_tool_path node); then
echo "Node found at: $NODE_PATH"
else
echo "Please install Node.js with Volta"
exit 1
fi
3. 環境ドキュメント
bash
# 環境情報を記録
volta which node >> environment.log
volta which npm >> environment.log
volta which yarn >> environment.log