Windows 10/11 にnode.jsとyarnをインストールする
意外に複雑なWindowsでのWeb開発環境構築
私は元々UNIX系から開発をスタートしたこともあって、DOSの世界に等しいコマンドプロンプトより、PowerShellを使うことが多い。
訳あってWindowsでReactの開発を行うことになったので、PowerShell経由でNode.jsとyarnを入れることにした。
ところが、これはかなり厄介な道であった。以下にその手順を記す。
node.jsを本家サイトの指示に従ってインストール
node+npmを本家サイトにアクセスしてダウンロードする。
UNIX系OSではnvmをインストールしてからnode, npmをインストールするがfnmというクロスプラットフォームのパッケージマネージャーを使ってインストール。
ここまではすんなりといく。
# installs fnm (Fast Node Manager)
winget install Schniz.fnm
# configure fnm environment
fnm env --use-on-cd | Out-String | Invoke-Expression
# download and install Node.js
fnm use --install-if-missing 20
# verifies the right Node.js version is in the environment
node -v # should print `v20.18.0`
# verifies the right npm version is in the environment
npm -v # should print `10.8.2`
問題はこのfnmで設定したenvをPowerShellに記憶させるところだ。この設定は別のPowerShellを開くと忘れてしまうのだ。
fnmで設定する環境を永続化させる
まずはPROFILE環境変数(内容はPath)が存在するかどうか確認
Test-Path $PROFILE
Trueなら存在しているが、Falseなら存在しない。存在しない時には次のコマンドで生成する。
New-Item -Path $PROFILE -ItemType File -Force
先ほどのfnm設定を$PROFILEの最後の行に書き込む。作ったばかりならば空だろう。
notepad $PROFILE
を実行して
fnm env --use-on-cd | Out-String | Invoke-Expression
を書き込む。これで永続化はできるが、別のPowerShellを開くとデジタルサインされていないから読み込めない旨のエラーが出る。
$PROFILEに自己サイン証明書をつける
そのエラーを回避するために自己サイン証明書を$PROFILEに付与する。
まずPowerShellを管理者として開き、以下のコマンドで自己サイン証明書を発行する。
$cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "YourName" -CertStoreLocation "Cert:\CurrentUser\My"
YourNameはPowerShellで表示されている自分のIDを入れればいい。ついで「然るべき場所」に移動しておく。
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "CurrentUser")
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close()
生成した証明書を$PROFILEに紐付ける
Set-AuthenticodeSignature -FilePath $PROFILE -Certificate $cert
場合によってはサインされたスクリプトなら実行できるように明示する必要があるかも知れない。
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
ここまでやって新しいPowerShellを開くと、自分でサインした~.ps1を信頼して走らせるか尋ねられるかも知れない。その時はA(Always)を選べば良い。
Yarnのインストール
これは公式サイトで最新版のバイナリをmsiでインストールするのが良いだろう。npmでやるとyarn.ps1にも証明書をつける必要が出る。サブタイトルにつけたようなエラーが出るのだ。chocoもインストールできるなら利用してもいいが、会社などではダメというところも少なくないだろう。
これでようやく「普通に」nodeやyarnがPowerShellのコマンドとして扱えるようになる。
2024年10月現在
> yarn --version
1.22.22
> node -v
v20.18.0
のようなバージョンが入る。