NodeJSのインストール。by scoop
scoop の準備
scoop を入れるために、リモートコードを許可する。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
scoop をインストールする
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
scoopのインストール先
scoop は /User/takuya/scop
にインストールをします。
nodejs インストール
scoop で nodejs(LTS) を入れる
nodejs/npm/npx をインストール
scoop install nodejs-lts
実行画面。
実行するとこんな感じ。
Scoop でnodejs を入れると
scoopで入れると PATH設定
をやってくれる。これが楽。
インストール時に必要はPATH設定が同時に実行されるため、特に何も考えず、コマンドが使える。
このため、コマンド関連はscoopでインストールが便利
nodejs をインストールした場合のPATH
次のコマンドがPATHに追加されている。
PS C:\Users\takuya> $env:path.split(";") C:\Users\takuya\scoop\apps\nodejs\current\bin C:\Users\takuya\scoop\apps\nodejs\current C:\Users\takuya\scoop\shims
chocolatey より便利な場合が多い
choco だとパッケージが多かったり、最新版が来なかったりするし、管理者ユーザーでかんりするひつようがるが
scoop なら初期設定がユーザ空間で、ユーザーインストールされるので、サクッと使うには便利かもしれない。
WSLと共存はめんどくさい。
ただし、WSLと共通のコマンド(npm/node)を入れてしまうと。PATHが競合して面倒が起きる。
対応するには、PATHの優先順位を逆順にするなどいくつか対応が必要です。
echo $PATH | \ sed -e 's/:/\n/g' | \ awk ' { if ( $1 ~ /mnt/ ) print length(),$0 ; else print length()+1000, $0 } ' | \ sort -nr | \ cut -d ' ' -f 2- | \ paste -sd ':'
たとえば、/mnt/
が含まれるPATHエントリを優先度下げるとか。WSL側でWindowsに設定された同じコマンド( python, pip / node , npm / php )でPATHの競合が起きないよう、優先順位を配慮した設定が必要になると思われます。
設定例
サクッと書いてみた設定例。
## PATH 変数をソートする ## windowsの空白文字なディレクトリだと誤作動する。 ## /mnt/c のPATHはWindowsコマンドなので優先度を下げる。 function sort_path_env { path=$* # path=${path//:/ } path=$( echo $path | sed 's/:/\n/g' | awk '{ if( $1 ~ /mnt/ ) print length(),$0 ; else print length()+1000, $0 } ' | sort -nr | cut -d ' ' -f 2- | paste -sd ':' ) echo $path return 0 } export PATH=$(sort_path_env $PATH)