このプロジェクトについて

`n`は、シンプルさを重視した、BASHベースの軽量Node.jsバージョンマネージャーです。サブシェル、プロファイルの変更、複雑なAPIを必要とせず、対話的またはコマンドライン引数で、複数のNode.jsバージョンのダウンロード、インストール、切り替えが可能です。 ## 対応プラットフォーム `n`は、macOS、Linux(Windows Subsystem for Linuxを含む)、およびその他のUnix系システムで動作します。ネイティブWindowsシェル(例:PowerShell)、Git for Windows BASH、Cygwin DLLでは動作しません。 ## インストール Node.jsがすでにインストールされている場合、`n`をインストールする最も簡単な方法はnpmを使用することです: ```bash npm install -g n ``` デフォルトでは、`n`は`/usr/local`にインストールされるため、適切な権限が必要になる場合があります。ディレクトリの所有権を変更する、カスタムの`N_PREFIX`ロケーションを使用する、`sudo`で実行するなどのオプションがあります。 npmを使わないブートストラップの場合、`n`を直接ダウンロードして実行できます: ```bash curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts ``` サードパーティのインストーラーも利用可能で、macOSではHomebrew(`brew install n`)やMacPorts(`port install n`)、Linux/macOSでは`n-install`があります。 ## 主な機能 - **対話的な選択**:`n`を単独で実行すると、ダウンロード済みのバージョンが表示され、矢印キーで選択できます。 - **バージョン指定**:完全または部分的なバージョン番号(例:`4.9.1`、`8`、`v6.1`)、`lts`、`latest`、`current`などのラベル、コードネーム(`argon`、`boron`、`carbon`)をサポートします。 - **自動バージョン検出**:`.n-node-version`、`.node-version`、`.nvmrc`、または`package.json`の`engines`フィールドを読み取ります。 - **キャッシュ管理**:ダウンロードはオフライン再インストール用にキャッシュされます。`n ls`はキャッシュされたバージョンを一覧表示し、`n rm`は特定のバージョンを削除し、`n prune`はアクティブなバージョン以外をすべてクリアします。 - **直接実行**:`n run <version> <script>`は特定のNode.jsバージョンでスクリプトを実行します。`n exec <version> <command>`はそのバージョンの`PATH`でコマンドを実行します。`n which <version>`はバイナリのパスを表示します。 - **npmの保持**:`--preserve`または`N_PRESERVE_NPM`/`N_PRESERVE_COREPACK`を使用して、現在のnpm/corepackバージョンを維持します。 - **カスタムミラー**:`N_NODE_MIRROR`または`N_NODE_DOWNLOAD_MIRROR`を設定して、代替のダウンロードソース(例:中国ミラーや非公式ビルド)を使用できます。 - **アーキテクチャの上書き**:`--arch`または`N_ARCH`を使用して特定のバイナリ(例:Alpine用の`x64-musl`)を選択できます。 - **環境変数**:`N_PREFIX`はインストール場所を変更し、`N_CACHE_PREFIX`はキャッシュ場所を変更し、`NO_COLOR`/`CLICOLOR=0`はANSIカラーを制御します。 - **診断**:`n doctor`はトラブルシューティングに役立ちます。 ## 使用例 ```bash n 10.16.0 # 特定のバージョンをインストール n lts # 最新のLTSをインストール n ls-remote lts # 一致するリモートバージョンを一覧表示 n ls # キャッシュされたバージョンを一覧表示 n rm 0.9.4 # キャッシュされたバージョンを削除 n uninstall # アクティブなNode.jsを削除(キャッシュは保持) n run 8.11.3 --debug some.js n exec 10 my-script --fast test n --offline 12 # インターネットなしでキャッシュされたバージョンを使用 ``` ## 仕組み `n`はNode.jsのtarballをキャッシュフォルダ(デフォルト:`N_PREFIX/n/versions`)にダウンロードし、アクティブなバージョンを`bin`、`include`、`lib`、`share`サブディレクトリにインストールします。`--preserve`を使用しない限り、グローバルなnpmパッケージは変更しません。このツールは、最小限で透過的になるように設計されており、シンプルなバージョンマネージャーを好む開発者に人気があります。