n
nvmやnodebrewなどと同じく、Node.jsのバージョン管理ツールの1つです。
対象読者
・MacOSユーザー
※nはWindowsをサポートしていません。
前提
Homebrewがインストール済み
インストール済みの場合は、バージョンが表示されます。
$ brew -v
Homebrew 3.0.4
バージョンが表示されなかった方は、インストールを行います。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストール
brewコマンドを使って、nをインストールします。
brew install n
バージョンの確認
コマンドを実行しバージョンが表示されれば、正常にインストールされています。
$ n -V
7.0.0
Node.js LTS版のインストール
試しにNode.jsのLTS(最新安定版)をインストールしてみます。
準備
nはデフォルトで/usr/local
以下に、n/versions
ディレクトを作成し、そこでバージョンを管理を行います。
/usr/local
以下はroot権限のディレクトリに該当し、通常ユーザーではアクセスできないディレクトリです。
nコマンドでNode.jsをインストールする前に、以下のいずれかの対応が必要です。
- sudo コマンド で実行
- 環境変数
N_PREFIX
に、ホームディレクトリなどをインストール先を指定 -
/usr/local/n
を作成し、ユーザーの読み取り権限を付与
今回は、nコマンド実行時に毎回sudoを叩きたくない&環境変数を増やしたくないので、
3./usr/local/n を作成し、ユーザーの読み取り権限を付与
を行います。
# make cache folder (if missing) and take ownership
$ sudo mkdir -p /usr/local/n
$ sudo chown -R $(whoami) /usr/local/n
README.mdから引用
LTSのバージョン確認
インストールコマンドを叩く前に、LTSのバージョンを確認します。
$ n --lts
14.16.0
インストール
nコマンドの引数にltsを渡して実行します。
$ n lts
正常にインストールされると以下のような表示となります。
installing : node-v14.16.0
mkdir : /usr/local/n/versions/node/14.16.0
fetch : https://nodejs.org/dist/v14.16.0/node-v14.16.0-darwin-x64.tar.xz
installed : v14.16.0 (with npm 6.14.11)
失敗した場合
権限が無いと以下の通り怒られるので、権限付与のコマンドを実行して再実行するか、管理者権限で実行してください。
installing : node-v14.16.0
mkdir : /usr/local/n/versions/node/14.16.0
mkdir: /usr/local/n/versions/node/14.16.0: Permission denied
Error: sudo required (or change ownership, or define N_PREFIX)
Node.js 最新版のインストール
※LTS版ではなく、最新版を使いたい場合はこちら
最新バージョンの確認
n ls-remote latest
インストール
引数にlatestもしくは、current を渡して実行します。
$ n latest
## もしくは
$ n current
Node.js バージョン指定してインストール
インストール可能なバージョンを確認
# インストール可能なバージョンを表示(最新から20件)
$ n lsr
# 全てのインストール可能なバージョンを表示
$ n --all lsr
インストール
一覧に表示された中から、インストールしたいバージョンを引数で指定します。
$ n 15.10.0
バージョンの切り替え
すでにインストールしている中から、自由に切り替えることができます。
$ sudo n
nコマンドを実行するとインストール済みのバージョン一覧が表示されます。
上下キーでバージョンを選択し、Returnキーで切り替えることが可能です。
正常に切り替わると以下のように表示されます。
installed : v14.16.0 (with npm 6.14.11)
失敗した場合
以下のようにズラズラ〜っとPermission deniedが出たあとに、
installedが表示された場合は正常に切り替わっていません。
sudoでnコマンドを実行し直してください。
cp: /usr/local/lib/node_modules/npm/lib/uninstall.js: Permission denied
cp: /usr/local/lib/node_modules/npm/.mailmap: Permission denied
cp: /usr/local/lib/node_modules/npm/.travis.yml: Permission denied
cp: /usr/local/lib/node_modules/npm/tap-snapshots/test-tap-fund.js-TAP.test.js: Permission denied
cp: /usr/local/lib/node_modules/npm/tap-snapshots/test-tap-repo.js-TAP.test.js: Permission denied
cp: /usr/local/lib/node_modules/npm/.licensee.json: Permission denied
installed : v14.16.0 (with npm 6.14.11)
(おまけ) nコマンドでsudoしたくない人向け
以下のコマンドでユーザーに権限を付与することでsudoが不要になります。
# take ownership of node install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
README.mdから引用
感想
n
の一文字だけでスマートにNode.jsのバージョンを切り替える事がメリットだと感じました。
ただし、切り替え速度に関して、自環境ではバージョン切り替えが完了するまで、8~10秒くらいかかりました。※環境に左右されると思います。
バージョン切替時の処理内容が、/usr/local/lib/node_modules/npm
以下を全削除したあと、
指定のバージョンのNode.jsを入れ直しているため、そのぶん時間がかかってると思われます。
少し切替速度は気になりましたが、n
コマンドでスマートにバージョン切り替えをしてみたいという方は、ぜひ参考にしてみてください。