n
– Node.js バージョンを対話的に管理するNode.js のバージョン管理: サブシェル、プロファイルのセットアップ、複雑な API はなく、シンプルです。
n
– Node.js バージョンを対話的に管理するn
、macOS、Linux (Windows Subsystem for Linux を含む)、およびその他のさまざまな UNIX 系システムでサポートされています。これは BASH スクリプトとして記述されていますが、コマンド シェルとして BASH を使用する必要はありません。
n
、Microsoft Windows 上のネイティブ シェル (PowerShell など)、Git for Windows BASH、または Cygwin DLL では機能しません。
すでに Node.js がインストールされている場合は、 npm
使用してn
インストールする簡単な方法です。
npm install -g n
n
の実行時に使用されるデフォルトのルートの場所は/usr/local
ですが、通常のユーザーには書き込み権限がありません。上記のコマンドのように、npm を使用してグローバル モジュールをインストールするときにも、同じ種類の権限エラーが発生する可能性があります。主なオプションは 3 つあります。
n
に指示します ( N_PREFIX
を参照)sudo
置きますn
、Node.js バージョンをサブディレクトリn/versions
にキャッシュします。アクティブなNode.js バージョンは、サブディレクトリbin
、 include
、 lib
、およびshare
にインストールされます。
システム ディレクトリの所有権を取得するには (オプション 1):
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
npm
がまだ利用できない場合、インストールをブートストラップする 1 つの方法は、 n
直接ダウンロードして実行することです。 Node.js のlts
バージョンをインストールするには:
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
n
自体のアップデートのサポートが必要ない場合は、ダウンロードを保存するだけで済みます。
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
Homebrew を使用する macOS では、n 公式をインストールできます。
brew install n
または、MacPorts を備えた macOS では、n ポートをインストールできます。
port install n
Linux および macOS では、n-install を使用して GitHub から直接インストールできます。例えば:
curl -L https://bit.ly/n-install | bash
n-install は、 PREFIX
とN_PREFIX
両方を$HOME/n
に設定し、 n
$HOME/n/bin
にインストールし、サポートされているシェルの初期化ファイルを変更してN_PREFIX
エクスポートし、 $HOME/n/bin
PATH
に追加し、最新のシェルをインストールします。 LTS Node.js のバージョン。
その結果、 n
自体と、n が管理するすべての Node.js バージョンの両方が、オプションで構成可能な単一のディレクトリ内でホストされ、後で付属のn-uninstall
スクリプトを使用して削除できます。 n-update
n
自体を最新バージョンに更新します。詳細については、n-install リポジトリを参照してください。
以前にインストールされていた Node.js を別の場所に変更するには、いくつかの追加手順が必要になる場合があります。 Node.js の管理に Homebrew の使用からn
使用に切り替えるウォークスルー例については、ノードの場所の変更に関するドキュメントを参照してください。
ノードのインストール後に「インストールされた」場所と「アクティブな」場所が異なる場合は、複数のバージョンに問題があります。
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
n <version>
を実行するだけで、Node.js のバージョンをダウンロードしてインストールできます。 <version>
が既にダウンロードされている場合、 n
そのキャッシュからインストールします。
n 10.16.0
n lts
n
単独で実行して、ダウンロードしたバージョンを表示し、選択したバージョンをインストールします。
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(矢印やctrl+nとctrl+p を使用する代わりに、 jとk を使用して次または前のバージョンを選択することもできます。)
アクティブなノードのバージョンがインストール後に変更されない場合は、古いバージョンが表示される可能性があるため、新しいシェルを開いてみてください。
n
コマンドのターゲット Node.js バージョンを指定するには、さまざまな方法があります。ほとんどのコマンドは一致する最新のバージョンを使用し、 n ls-remote
複数の一致するバージョンをリストします。
数値バージョン番号は完全または不完全で、先頭にオプションのv
付けることができます。
4.9.1
8
: 8.xy バージョンv6.1
: 6.1.x バージョン特に便利な 2 つのバージョンのラベルがあります。
lts
: 最新の長期サポート正式リリースlatest
、 current
: 最新の正式リリース現在のディレクトリまたは任意の親ディレクトリ内のファイルからターゲット バージョンを読み取るためのauto
ラベルがあります。 n
次の順序で検索します。
.n-node-version
: 単一行のバージョン。 n
にカスタム。.node-version
: 単一行のバージョン。複数のツールで使用:node-version-usage.nvmrc
: 単一行のバージョン。 nvm
によって使用されます。engine
を探します。 engine
ラベルはpackage.json
ファイルを探し、 engines
フィールドを読み取って、互換性のある Node.js を判断します。 jq
またはnode
のバージョンがインストールされている必要があり、複雑な範囲を解決するためにnpx semver
使用します。
名前付きリリース ストリームがサポートされています。
argon
、 boron
、 carbon
: LTS リリース ストリームのコードネームこれらの Node.js サポート エイリアスは使用できますが、単に最新の一致するバージョンに解決されます。
active
、 lts_active
、 lts_latest
、 lts
、 current
、 supported
最後のバージョンの形式は、リモート ダウンロード フォルダーの名前の後に、必要に応じて完全バージョンまたは不完全バージョンを続けて使用して、利用可能な他のリリースを指定するためのものです。
nightly
test/v11.0.0-test20180528
rc/10
キャッシュされたバージョンをいくつか削除します。
n rm 0.9.4 v0.10.0
インストールされているバージョンを除くすべてのキャッシュされたバージョンを削除します。
n prune
インストールされている Node.js を削除します (キャッシュされたバージョンには影響しません)。これは、ノードのシステム バージョンに戻す場合 (別の場所にある場合)、またはノードと npm を使用したくない場合、またはそれらの管理方法を別の方法に切り替える場合に便利です。
n uninstall
再インストールせずに、ダウンロードしたバージョンの Node.js を直接操作するためのコマンドが 3 つあります。
ダウンロードしたnode
バージョンへのパスを表示できます。
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
または、 n run
コマンドを使用して、ダウンロードしたnode
バージョンを実行します。
n run 8.11.3 --debug some.js
または、 PATH
を変更してコマンドを実行し、 node
とnpm
ダウンロードした Node.js バージョンのものになるようにします。 (注意: この方法で実行されるnpm
、ターゲット ノード バージョン フォルダーのグローバル node_modules を使用します。)
n exec 10 my-script --fast test
n exec lts zsh
Node.js のインストールには通常、 npm
、 npx
、およびcorepack
も含まれていますが、 --preserve
使用して現在の (特に新しい) バージョンを保存したい場合があります。
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
環境変数を空でない文字列に設定することで、これをデフォルトにできます。 npm
とcorepack
には個別の環境変数があります。
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
環境変数がどのようなものであっても、明示的に目的の動作を得ることができます。
n --preserve nightly
n --no-preserve latest
コマンド ライン ヘルプは、 n --help
から取得できます。
ダウンロード可能な一致するリモート バージョンをリストします。
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
キャッシュ内のダウンロードされたバージョンをリストします。
n ls
バージョンをキャッシュにダウンロードします。
n download 22
インターネットが利用できない状態で、キャッシュされたバージョン (ダウンロード済み) にアクセスするには、 n
使用します。
n --offline 12
--cleanup
使用してインストールした後、キャッシュ バージョンを削除します。これは、Docker コンテナーなどのワンショット インストールの場合に特に便利です。
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
通常、 n run
、 n exec
、およびターゲット バージョンがまだキャッシュにない場合は失敗しn which
。 --download
を追加して、利用可能な場合はキャッシュを使用するか、必要に応じてダウンロードすることができます。
n --download run 18.3 my-script.js
問題の解決に役立つ診断を表示します。
n doctor
デフォルトの https://nodejs.org/dist/ と同じレイアウトを持つ別の Node.js ミラーを使用したい場合は、 N_NODE_MIRROR
を定義できます。
一例として、中国のユーザーは以下を定義できます。
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
もう 1 つの例は、armv6l (Raspberry Pi) や 32 ビット x86 など、公式に利用可能になっていない一部のプラットフォーム用のダウンロードを含む Node.js unofficial-builds プロジェクトです。
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
n
によって自動検出されない場合は、Alpine でmusl
libc
使用するなど、アーキテクチャを明示的に指定する必要がある場合があります。
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
カスタム ミラーで認証が必要な場合は、URL エンコードされたユーザー名とパスワードを URL に追加できます。例えば
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
デフォルトの https://nodejs.org/download と同じレイアウトを持つ別のミラーのN_NODE_DOWNLOAD_MIRROR
もあります。
デフォルトでは、 n
システム アーキテクチャに一致するバイナリを選択します。たとえば、64 ビット システムでは、 n
64 ビット バイナリをダウンロードします。
Apple シリコンを搭載した Mac の場合:
n
デフォルトはネイティブに実行される arm64 バイナリですn
デフォルトは、Rosetta 2 で実行される x64 バイナリです。 -a
または--arch
オプションを使用して、デフォルトのアーキテクチャをオーバーライドできます。
たとえば、x64 バイナリを含む最新バージョンの Node.js を再インストールします。
n rm current
n --arch x64 current
n
コマンドはデフォルトで/usr/local
にダウンロードおよびインストールされますが、 N_PREFIX
定義することでこの場所をオーバーライドできます。場所を$HOME/.n
に変更するには、次のような行をシェル初期化ファイルに追加します。
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
ダウンロードを別の場所に保存する場合は、 N_CACHE_PREFIX
を使用します。これは、アクティブなノードのバージョンがインストールされている場所には影響しません。
システム上の tar が xz 圧縮解除をサポートしている可能性がある場合、 n
では、ダウンロードに xz 圧縮された Node.js tar ボールを使用します。環境変数をゼロまたはゼロ以外に設定することで、自動選択をオーバーライドできます。
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
環境変数がどのようなものであっても、明示的に目的の動作を得ることができます。
n install --use-xz nightly
n install --no-use-xz latest
簡単に言うと:
N_NODE_MIRROR
: 「カスタム ソース」を参照N_NODE_DOWNLOAD_MIRROR
: 「カスタム ソース」を参照N_MAX_REMOTE_MATCHES
は、デフォルトのls-remote
の最大一致バージョン 20 を変更します。N_PRESERVE_NPM
: 「npm の保存」を参照してください。N_PRESERVE_COREPACK
: 「npm の保存」を参照してください。 n
事前に構築された Node.js パッケージをダウンロードし、単一のプレフィックス (例: /usr/local
) にインストールします。これにより、以前のバージョンが上書きされます。この場所のbin
フォルダーはPATH
(例: /usr/local/bin
) 内にある必要があります。
ダウンロードは、再インストールに使用されるキャッシュ フォルダーに保存されます。ダウンロードはn which
、 n run
、 n exec
使用して限定的に使用することもできます。
Node.js インストールの一部であるnpm
自体を除き、グローバルnpm
パッケージはインストールによって変更されません。