LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

n, システムのNode.jsをバージョン管理する

Node.js image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

Node.jsを複数インストールしてバージョン管理するツールはたくさんありますが、npmのnパッケージはちょっと特殊です。

『OS全体(システム)のNode.jsのバージョンを管理する』という点で。

ほかのNode.jsバージョン管理ツールとのちがい

nvm

nodebrew

nodenv

など、Node.jsを複数インストールして、Node.jsのバージョンを使い分けるツールはたくさんあります。

これらのツールは、インストール先がユーザーのホームディレクトリになりますが、nだけはちがいます。

nは複数のNode.jsをOS全体(システム)にインストールします。nでバージョンを管理するのは『システムのNode.js』です。

nにかぎらず、Node.jsのバージョン管理ツールは

Node.jsパッケージ管理ツールnpm
Node.js実行ツールnpx

もセットで管理します。

システムのNode.jsのバージョンを管理するならn

システム全体でひとつのNode.jsを使うとき、nはほかのバージョン管理ツールよりも最適です。

nのコマンド一発で、システム配下のアプリのNode.jsのバージョンを一括で管理できるので。

(そういう場面に出会ったことはないが...)

逆に、OSのユーザー、アプリごとにNode.jsのバージョンがちがうときには使えません。ほかのツールを検討すべきです。

Windowsで使うための工夫

Windowsでnを使うには、そのままでは無理です。

(そもそもインストールできない。)

Windowsで使うにはちょっと工夫が必要で

WSL(Windows Subsystem for Linux)を使う。

or

パッケージマネージャーアプリ(Chocolateyなど)経由で使う。

の2択です。Chocolateyは、コマンドからパッケージを管理するアプリで、Windows版のyum, apt, brewみたいなものです。

Windowsでは、Linuxを仮想的に使うかLinuxもどきの操作をするアプリが必要なんですね?

Macの中身はUnixです。Linuxと親和性があります。

(コマンド操作が似ている。)

MacとLinuxは遠い親戚みたいなもの。

nを使ったNode.jsの構成

nはnpmのパッケージです。Node.jsを複数インストールして管理するのにNode.jsが必要です。

(なんのこっちゃ?)

大元のNode.js, npmはnの管理下になりません。nを使うNode.jsの構成は

n管理外/usr/bin
ひとつだけ。
n管理内/usr/local/bin
複数可。

になります。

nのインストール

まずは、nパッケージをインストールするための大元のNode.jsをインストールします。

次にnpmコマンドでnパッケージをインストールしましょう。作業はすべて管理者権限(root)です。

npm install n -g
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
+ n@6.1.3

OSシステムにインストールするので"-g"をつけましょう。

これでnコマンドが使えるようになりました。

nの使い方

nの使い方はシンプルです。コマンドの種類もそう多くないのですぐに覚えます。

ここでは、nでバージョン管理する最小限のコマンドだけをご紹介します。

管理者権限(root)で行います。ユーザー権限では、状態表示・確認はできますが、肝心のNode.jsインストール・バージョン切り替えはできません。

ダウンロード可能なバージョン表示

n ls-remote
Listing remote... Displaying 20 matches (use --all to see all).
13.6.0
13.5.0
 .
 .
12.8.0

ダウンロードしてインストール

バージョン指定インストール
n 13.2.0

  installing : node-v13.2.0
       mkdir : /usr/local/n/versions/node/13.2.0
       fetch : https://nodejs.org/dist/v13.2.0/node-v13.2.0-linux-x64.tar.gz
   installed : v13.2.0 (with npm 6.13.1)

最新版や安定版(の最新)はバージョン番号じゃなくてもできます。

最新版インストール
n latest

  installing : node-v13.6.0
       mkdir : /usr/local/n/versions/node/13.6.0
       fetch : https://nodejs.org/dist/v13.6.0/node-v13.6.0-linux-x64.tar.gz
   installed : v13.6.0 (with npm 6.13.4)
長期サポート版(安定版)インストール
n lts

  installing : node-v12.14.1
       mkdir : /usr/local/n/versions/node/12.14.1
       fetch : https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.gz
   installed : v12.14.1 (with npm 6.13.4)

このコマンドはダウンロードするだけじゃありません。使うNode.jsのバージョンも変更します。

node -v
v12.14.1

バージョンを確認すると、ダウンロード・インストールしたバージョンになるはずです。

使用バージョンの切り替え

切り替えはシンプルです。nだけをコマンド実行します。

n

動きをアニメーションで確認しましょう。

nコマンド 切り替え アニメーション
  1. nを入力してEnter
  2. ↑↓で変更するバージョンを選んでEnter(vimのj, kでもできる)
  3. node -v でバージョン確認

ダウンロード済みNode.jsのリスト表示

n ls
node/12.14.1
node/13.2.0
node/13.6.0

Node.jsの削除

n rm 12.14.1 13.2.0

ダウンロードしたNode.jsを削除します。rmサブコマンドはLinuxのrmと同じ使い方なので複数削除もできます。

ダウンロード先のバージョン・ディレクトリごと削除します。

ダウンロード先/usr/local/n/versions/node/(バージョン番号)/

その他の使い方

ほかにもnのサブコマンドはあります。Node.jsの公式ドキュメントを参照ください。

nの切り替えはファイルのコピー

nのバージョン切り替えは、ダウンロードしたファイルを /usr/local/binなどへコピーして行います。

(すでにコピー先にあるファイルは削除してからコピー)

コピー元/usr/local/n/versions/node/(バージョン番号)/
コピー先/usr/local/bin
/usr/local/lib
/usr/local/include

/usr/local/binには3つのコマンドとnpmでインストールしたコマンドがコピーされますが、シンボリックリンクを使うので、lib, includeも変更します。

コマンドファイル内容
node実行ファイル
npm
npx
/usr/local/lib/node_modules/へのシンボリックリンク
n
(npmパッケージ)
/usr/local/lib/node_modules/へのシンボリックリンク

ユーザー権限で実行できない理由はこれです。/usr/local/**でファイル削除・コピーするので、ユーザー権限では "Permission denied" が発生します。

nで管理するNode.jsの実行コマンドはコピー先の /usr/local/bin/** です。ダウンロードしたNode.jsのコマンドを直接実行しているわけではありません。

(環境変数PATHに/usr/local/binが入っている。)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください