WindowsでNode.js環境を構築する
仕事で Windows マシンを触っているので、すごく久々に Windows で Node.js 環境を構築しました。
WSL2 を使える前提であれば、WSL2 + anyenv + nodenv が、現時点での選択肢としては最善かなという気がしています。
ただ、様々な事情により Windows Native の Node.js を構築しなければいけない状態で、七転八倒した僕の結論としては、scoop + nvm がベターチョイスということになりました。
- Chocolatey ではなく scoop を使う
- Nodist ではなく nvm を使う
この 2 点だけ覚えておけば大丈夫です。
これ以後の記事はおまけです。
パッケージ管理ツールに Chocolatey ではなく scoop を使う
Windows のパッケージ管理の定番は、Chocolateyです。ところが Chocolatey は、執拗なまでに管理者権限(UAC ポップアップ)を求めてくるという問題点があります。
Scoopは、極力 UAC ポップアップを出さないパッケージ管理ツールです。
インストール方法は https://scoop.sh/ を御覧ください。
Make sure PowerShell 5 (or later, include PowerShell Core) and .NET Framework 4.5 (or later) are installed. Then run:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') # or shorter iwr -useb get.scoop.sh | iex
Note: if you get an error you might need to change the execution policy (i.e. enable Powershell) with
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Scoop がインストールされればあとは nvm をインストールするだけです。
Node.js バージョン管理ツールに Nodist ではなく nvm を使う
nullivex/nodist は大変使い勝手のよいパッケージマネージャですが 、開発がもう 2 年ほど止まっている状態であり npm の取り扱いに致命的な難点があります。
Nodist でインストールを行った場合 npm は、バージョン 6.9 というとても古いバージョンのものがインストールされます。この 6.9 は、Node 14 では動作しません。
また、いまは当たり前に使われる npx コマンドも、Nodist ではインストールできません。
これらの問題があるため、Nodist で npm/npx を最新版にアップデートするためには、何段階かの手順を踏まないといけません。
方法はあるとしても nvm を使えばしなくていいような苦行をする必要はありません。
scoop install nvm
そこで、scoop を使い nvm をインストールするのです。
nvm install 14.15.1
nvm use 14.15.1
もし、あなたの環境に Nodist が残っている場合は削除すべきです。
Discussion
Scoopでインストールされるnvmは、実はnvm-windowsのほうでして、これは最後のリリースが2018年で止まっています。
ScoopでNode.jsに複数バージョンをインストールするのなら、各種アプリの過去バージョンが収められているversionsバケットを利用するのがよいと思います。
scoop install nodejs nodejs14 nodejs12
などのように複数インストールしてからscoop reset nodejs14
などとするとバージョンを使い分けられます。