Skip to content

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