Windows 11 環境でのセットアップ
パッケージマネージャ winget を利用して fnm をインストールします。
winget install Schniz.fnm
インストール直後は PowerShell にパスが通っていないため、下記コマンドでロードしておきます。
fnm env --use-on-cd | Out-String | Invoke-Expression
国内ミラーから高速に取得する場合は環境変数を追加します。
[Environment]::SetEnvironmentVariable(
'FNM_NODE_DIST_MIRROR',
'https://npmmirror.com/mirrors/node',
'User'
)
基本的な操作
- リモートの全バージョン一覧:
fnm ls-remote - ローカルにインストール済み一覧:
fnm ls - 特定バージョンのインストール:
fnm install 18.17.0 - LTS 最新をインストール:
fnm install --lts - メジャー指定でのインストール:
fnm install 20 - バージョン削除:
fnm uninstall 16 - 既定バージョンに設定:
fnm default 20 - 即座に切り替え:
fnm use 20
プロジェクトごとの自動切り替え
リポジトリルートに .node-version または .nvmrc を置くことで、cd した瞬間に指定バージョンが有効になります。
echo "20.12.2" > .node-version
JetBrains IDE 連携
WebStorm などが fnm の Node を認識できるよう、デフォルトエイリアスパスをユーザ PATH に追加します。
$aliasDir = "$env:APPDATA\fnm\aliases\default"
[Environment]::SetEnvironmentVariable(
'Path',
[Environment]::GetEnvironmentVariable('Path', 'User') + ";$aliasDir",
'User'
)
Linux サーバへの導入
curl/bash ワンライナーでインストールし、/usr/local/fnm に配置します。
curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir /usr/local/fnm
インストール後、/etc/profile.d/fnm.sh を作成して全ユーザが利用できるようにします。
sudo tee /etc/profile.d/fnm.sh <<'EOF'
export FNM_DIR=/usr/local/fnm
export PATH="$FNM_DIR:$PATH"
eval "$(fnm env --use-on-cd)"
EOF
sudo chmod 644 /etc/profile.d/fnm.sh
設定を即座に反映:
source /etc/profile.d/fnm.sh
非 root ユーザーの権限対策
CI/CD ランナーや git ユーザーが /run/user/UID を利用できるよう、事前にディレクトリを作成して権限を付与します。
uid=$(id -u git)
sudo mkdir -p /run/user/$uid
sudo chown git:git /run/user/$uid
sudo chmod 700 /run/user/$uid
該当ユーザーの ~/.bashrc に以下を追加:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
eval "$(fnm env --use-on-cd)"
インストーラスクリプト(抜粋)
以下は公式スクリプトの主要部を簡略化したものです。アーキテクチャ判定、依存チェック、シェル設定の自動追記まで行います。
#!/usr/bin/env bash
set -e
INSTALL_DIR="${INSTALL_DIR:-$HOME/.local/share/fnm}"
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
case "$ARCH" in
armv7*) FILENAME="fnm-arm32" ;;
aarch64|armv8*) FILENAME="fnm-arm64" ;;
x86_64) FILENAME="fnm-linux" ;;
*) echo "Unsupported arch"; exit 1 ;;
esac
curl -L "https://github.com/Schniz/fnm/releases/latest/download/${FILENAME}.zip" -o /tmp/fnm.zip
unzip -q /tmp/fnm.zip -d /tmp
mv /tmp/fnm "$INSTALL_DIR/fnm"
chmod +x "$INSTALL_DIR/fnm"
echo 'export PATH="'"$INSTALL_DIR"':$PATH"' >> ~/.bashrc
echo 'eval "$(fnm env)"' >> ~/.bashrc
これで複数の Node.js バージョンを高速に切り替えながら開発・CI/CD が可能になります。