インストール - Node.js
概要
Node.jsは、Web開発において必要不可欠なツールであり、ChromeのV8 JavaScriptエンジン上に構築されたJavaScriptランタイムである。
サーバサイドJavaScriptの実行を可能にして、非同期I/Oモデルを採用することで高いパフォーマンスを実現している。
PHP等のプログラム言語を使用せずに、サーバ側のコードを実行するため、広く使用されている。
また、非同期I/Oモデルを採用しているため、大量の同時接続を効率的に処理でき、アプリケーションの機能が大幅に拡張される。
多くのシステム管理者は、Webアプリケーションが完全に機能できるように、サーバ上でNode.jsを実行する必要がある。
したがって、Node.jsのインストールは、サーバでWebアプリケーションを提供できるようにするための基本的な手順である。
Node.jsのインストール
Node.jsのインストールは、公式リポジトリ、バイナリファイル、ソースコードからのビルド等、複数の方法が用意されている。
プロジェクトの要件や環境に応じて、適切なインストール方法を選択する。
パッケージ管理システムからインストール
Linuxディストリビューションのパッケージ管理システムからNode.jsをインストールすることができる。
ただし、公式リポジトリに含まれるNode.jsのバージョンは最新ではない可能性があるため、注意が必要である。
Node.jsに関連するパッケージがいくつか存在するが、インストールする必要があるのは以下に示すパッケージのみである。
# RHEL系の場合 sudo dnf install nodejs # SUSE sudo zypper install nodejs-common nodejs-default
次に、インストールされているNode.jsのバージョンを確認する。
node -v npm -v
バイナリファイルのインストール
Node.jsの公式Webサイトから、Node.jsのバイナリファイルをダウンロードしてインストールすることができる。
または、Node.jsの公式Webサイトにあるダウンロード一覧にアクセスして、任意のバージョンのNode.jsをダウンロードする。
公式Webサイトから、Linux Binaries (x64) を選択してダウンロードする。
ダウンロードしたファイルを適切なディレクトリに展開する。
tar xf node-v<バージョン>-linux-x64.tar.xz mv node-v<バージョン>-linux-x64 <Node.jsのインストールディレクトリ>
~/.profileファイル等に、環境変数 PATH を追加する。
vi ~/.profile
# ~/.profileファイル
export PATH="/<Node.jsのインストールディレクトリ>/bin:$PATH"
インストールが正常に完了したことを確認する。
node -v npm -v
ソースコードからインストール
Node.jsのビルドに必要なライブラリをインストールする。
この方法は、特定のカスタマイズや最適化を行う場合に有効である。
# RHEL系の場合 sudo dnf install make gcc-c++ python3 python3-pip # SUSE系の場合 sudo zypper install make gcc-c++ python3 python3-pip
Node.jsの公式Webサイトから、Node.jsのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf node-v<バージョン>.tar.xz cd node-v<バージョン>
Node.jsをビルドおよびインストールする。
./configure --prefix=<Node.jsのインストールディレクトリ> make -j $(nproc) make install
Ninjaビルドシステムを使用する場合は、以下に示す手順でビルド時間を短縮することができる。
./configure --prefix=<Node.jsのインストールディレクトリ> --ninja NINJA="ninja-build" make make install
~/.profileファイル等に、環境変数を追記する。
vi ~/.profile
# ~/.profileファイル
export PATH="/<Node.jsのインストールディレクトリ>/bin:$PATH"
インストールが正常に完了したことを確認する。
node -v npm -v
Node.jsバージョン管理ツール
Node.jsは新しいバージョンのリリース頻度が高く、プロジェクトによって必要とされるバージョンが異なる場合がある。
バージョン管理ツールを使用することにより、複数のNode.jsバージョンをインストールして、プロジェクトごとに適切なバージョンを自動的に切り替えることが可能となる。
バージョン管理ツールには、nvm、nodenv、fnmが存在する。
これらのツールを使用することで、プロジェクトごとに異なるNode.jsバージョンを柔軟に管理できる。
これらのツールは、.nvmrcや.node-versionファイルを通じて、プロジェクトのNode.jsバージョンを明示的に指定して、チーム全体で一貫した開発環境を維持することを可能にする。
nvm (Node Version Manager)
nvmは、最も広く使用されているNode.jsバージョン管理ツールである。
シェルスクリプトとして実装されており、複数のNode.jsバージョンをユーザごとに管理できる。
nvmのインストール
nvmは、公式のインストールスクリプトを使用してインストールする。
または、nvmのGithubにアクセスして、インストールスクリプトをダウンロードする。
このスクリプトは、nvmを~/.nvmディレクトリにダウンロードして、シェルの設定ファイルを自動的に更新する。
# curlを使用する場合 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # wgetを使用する場合 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
また、nvmは、環境変数 NVM_DIR を使用してインストール先を指定することができる。
インストールスクリプトを実行する前にこの環境変数を設定することにより、任意のディレクトリにnvmをインストールできる。
# インストール先ディレクトリの作成 mkdir -p <任意のインストールディレクトリ> # 環境変数NVM_DIRを設定してインストール export NVM_DIR="<任意のインストールディレクトリ>" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
~/.profileファイル等に、以下に示す設定を追加する。
# Bashの場合
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
## または任意のインストールディレクトリを指定する場合
export NVM_DIR="<任意のインストールディレクトリ>"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# Zshの場合
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
## または任意のインストールディレクトリを指定する場合
export NVM_DIR="<任意のインストールディレクトリ>"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Fishを使用している場合、bassをインストールする。
fisher install edc/bass
次に、Fishの設定を行う。
# Fishの場合 : ~/.config/fish/config.fishファイル
set -gx NVM_DIR "$HOME/.nvm"
test -s "$NVM_DIR/nvm.sh"; and bass source "$NVM_DIR/nvm.sh"
## または
set -gx NVM_DIR "<任意のインストールディレクトリ>"
test -s "$NVM_DIR/nvm.sh"; and bass source "$NVM_DIR/nvm.sh"
nvmが正常にインストールされたことを確認する。
nvm --version
nvmの基本的な使用方法
nvmを使用して、利用可能なNode.jsのバージョンを一覧表示できる。
# 利用可能な全てのNode.jsバージョンを表示 nvm ls-remote # LTSバージョンのみを表示 nvm ls-remote --lts # 特定のメジャーバージョンを表示 (例:22.x) nvm ls-remote 22
特定のバージョンのNode.jsをインストールする。
# Node.js 24.xの最新版をインストール nvm install 24 # 特定のバージョンをインストール nvm install 22.12.0 # 最新のLTSバージョンをインストール nvm install --lts # 最新バージョンをインストール nvm install node
インストール済みのNode.jsバージョンを一覧表示する。
nvm ls
使用するNode.jsバージョンを切り替える。
# 特定のバージョンに切り替え nvm use 22.12.0 # メジャーバージョンを指定して切り替え nvm use 22 # LTSバージョンに切り替え nvm use --lts # デフォルトバージョンを設定 nvm alias default 22.12.0
現在使用中のNode.jsバージョンを確認する。
nvm current
不要になったNode.jsバージョンをアンインストールする。
nvm uninstall 20.10.0
プロジェクトごとのバージョン指定
nvmでは、プロジェクトのルートディレクトリに.nvmrcファイルを配置することにより、プロジェクトごとに使用するNode.jsバージョンを指定できる。
.nvmrcファイルには、使用するNode.jsのバージョン番号を記述する。
# .nvmrcファイルの作成例 (Node.js 22.x) echo "22.12.0" > .nvmrc # またはメジャーバージョンのみを指定 echo "22" > .nvmrc # LTSバージョンを指定 echo "lts/*" > .nvmrc
プロジェクトディレクトリに移動した後、以下に示すコマンドで.nvmrcに記述されたバージョンに切り替える。
cd /path/to/project nvm use
シェルの設定ファイルに以下に示す関数を追加することにより、ディレクトリ移動時に自動的にNode.jsバージョンを切り替えることができる。
# ~/.profileファイル または ~/.zprofileファイル
# Bashの場合
cdnvm() {
command cd "$@" || return $?
nvm_path=$(nvm_find_up .nvmrc | tr -d '\n')
if [[ ! $nvm_path = *[^[:space:]]* ]]; then
declare default_version;
default_version=$(nvm version default);
if [[ $default_version == "N/A" ]]; then
nvm alias default node;
default_version=$(nvm version default);
fi
if [[ $(nvm current) != "$default_version" ]]; then
nvm use default;
fi
elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
declare nvm_version
nvm_version=$(<"$nvm_path"/.nvmrc)
declare locally_resolved_nvm_version
locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')
if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
nvm install "$nvm_version";
elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
nvm use "$nvm_version";
fi
fi
}
alias cd='cdnvm'
cdnvm "$PWD" || exit
nodenv
nodenvは、rbenv (Rubyのバージョン管理ツール) および pyenv (Pythonのバージョン管理ツール) と同様の設計思想に基づいて開発されたNode.jsバージョン管理ツールである。
シンプルな構造と予測可能な動作が特徴であり、シェルに依存しない実装となっている。
nodenvのインストール
nodenvのインストール方法は、Githubから直接インストールする方法が一般的である。
nodenvのGithubからダウンロードおよびインストールする。
# nodenvリポジトリをクローン git clone https://github.com/nodenv/nodenv.git ~/.nodenv # パフォーマンス向上のためbash拡張をビルド (オプション) cd ~/.nodenv src/configure make -C src # node-buildプラグインをインストール (Node.jsのインストールに必要) git clone https://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build
~/.profileファイル等に、環境変数を追記する。
# ~/.profileファイル等
export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"
nodenvが正常にインストールされたことを確認する。
nodenv --version
nodenvの動作確認を行う。
curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
nodenvの使用方法
nodenvを使用して、インストール可能なNode.jsのバージョンを一覧表示する。
# 全てのバージョンを表示 nodenv install --list # 特定のメジャーバージョンのみを表示 (例:22.x) nodenv install --list | grep "^22\."
特定のバージョンのNode.jsをインストールする。
# Node.js 22.xの特定バージョンをインストール nodenv install 22.12.0 # インストール後、shimを再構築 nodenv rehash
インストール済みのNode.jsバージョンを一覧表示する。
nodenv versions
グローバルで使用するNode.jsバージョンを設定する。
nodenv global 22.12.0
現在のディレクトリおよびそのサブディレクトリで使用するNode.jsバージョンをローカルに設定する。
nodenv local 22.12.0
現在のシェルセッションでのみ使用するNode.jsバージョンを設定する。
nodenv shell 22.12.0
現在使用中のNode.jsバージョンを確認する。
node -v nodenv version
プロジェクトごとのバージョン指定
nodenvでは、プロジェクトのルートディレクトリに.node-versionファイルを配置することにより、プロジェクトごとに使用するNode.jsバージョンを指定できる。
このファイルは、nodenv localコマンドで自動的に作成される。
# プロジェクトディレクトリに移動 cd /path/to/project # ローカルバージョンを設定 (.node-versionファイルが作成される) nodenv local 22.12.0
手動で.node-versionファイルを作成することもできる。
echo "22.12.0" > .node-version
nodenvは、カレントディレクトリから親ディレクトリに向かって.node-versionファイルを検索して、見つかったバージョンを自動的に使用する。
この仕組みにより、プロジェクトディレクトリに移動するだけで、適切なNode.jsバージョンが自動的に選択される。
fnm (Fast Node Manager)
fnmは、Rust言語で実装された高速なNode.jsバージョン管理ツールである。
クロスプラットフォーム対応であり、Windows、Linux環境で一貫した動作を提供する。
nvmやnodenvと比較して、起動時間が大幅に短縮されており、シェルの初期化パフォーマンスが重視される環境で特に有効である。
fnmのインストール
fnmは、公式のインストールスクリプトを使用してインストールする。
curl -fsSL https://fnm.vercel.app/install | bash
Cargoを使用する場合 (Rustのパッケージマネージャー) は、以下に示すコマンドでインストールできる。
cargo install fnm
インストールスクリプトは、シェルの設定ファイルを自動的に更新するが、手動で設定する場合は以下に示す内容を追加する。
--use-on-cd オプションは、ディレクトリ移動時に自動的にNode.jsバージョンを切り替える機能を有効にする。
# Bashの場合 : ~/.profileファイル
eval "$(fnm env --use-on-cd)"
# Zshの場合 : ~/.zprofileファイル
eval "$(fnm env --use-on-cd)"
# Fishの場合 : ~/.config/fish/config.fish
fnm env --use-on-cd | source
fnmが正常にインストールされたことを確認する。
fnm --version
fnmの使用方法
fnmを使用して、利用可能なNode.jsのバージョンを一覧表示する。
# 全てのバージョンを表示 fnm list-remote # 特定のメジャーバージョンのみを表示 (例:22.x) fnm list-remote | grep "v22\."
特定のバージョンのNode.jsをインストールする。
# Node.js 22.xの特定バージョンをインストール fnm install 22.12.0 # 最新のLTSバージョンをインストール fnm install --lts # 最新バージョンをインストール fnm install latest
インストール済みのNode.jsバージョンを一覧表示する。
fnm list
使用するNode.jsバージョンを切り替える。
# 特定のバージョンに切り替え fnm use 22.12.0 # LTSバージョンに切り替え fnm use --lts
デフォルトで使用するNode.jsバージョンを設定する。
fnm default 22.12.0
現在使用中のNode.jsバージョンを確認する。
fnm current
不要になったNode.jsバージョンをアンインストールする。
fnm uninstall 20.10.0
プロジェクトごとのバージョン指定
fnmは、.node-versionファイルおよび.nvmrcファイルの両方をサポートしている。
プロジェクトのルートディレクトリにいずれかのファイルを配置することで、プロジェクトごとに使用するNode.jsバージョンを指定できる。
# .node-versionファイルの作成 (Node.js 22.x) echo "22.12.0" > .node-version # または.nvmrcファイルの作成 echo "22.12.0" > .nvmrc
fnmの設定で--use-on-cdオプションを有効にしている場合、ディレクトリに移動すると自動的に指定されたNode.jsバージョンに切り替わる。
このオプションが有効でない場合は、手動でfnm useコマンドを実行する必要がある。
fnmは、他のバージョン管理ツールからの移行を容易にするため、複数の設定ファイル形式をサポートしている。
優先順位は、.node-version、.nvmrc、package.jsonのengines.nodeフィールドの順となる。
npm (Node Package Manager)
npmは、Node.jsに標準で付属するパッケージマネージャーである。
Node.jsをインストールすると自動的にnpmもインストールされるため、追加のセットアップは不要である。
npmは、世界最大のソフトウェアレジストリであり、100万を超えるパッケージが公開されている。
npmは、Node.jsの標準パッケージマネージャーとして、依存関係の管理、パッケージのインストールと更新、スクリプトの実行等、開発に必要な機能を包括的に提供している。
package.jsonおよびpackage-lock.jsonファイルを適切に管理することで、プロジェクトの依存関係を確実に制御できる。
npmの基本的な使用方法
新しいプロジェクトを初期化する時は、以下に示すコマンドを実行する。
これは、プロジェクトの基本情報を設定するためのpackage.jsonファイルを作成する。
# 対話形式でpackage.jsonを作成 npm init # デフォルト設定でpackage.jsonを作成 npm init -y
package.jsonファイルおよびpackage-lock.jsonファイルに記述されている依存関係をインストールする場合は、以下に示すコマンドを使用する。
これは、プロジェクトのルートディレクトリで実行する必要がある。
npm install # または npm i
package-lock.jsonファイルが存在する場合、npmはこのファイルを使用して正確なバージョンのパッケージをインストールする。
これにより、異なる環境でも同じバージョンの依存関係がインストールされることが保証される。
新しいパッケージをプロジェクトに追加する場合は、以下に示すコマンドを実行する。
# 本番環境で必要な依存関係として追加 npm install <パッケージ名> # 開発環境でのみ必要な依存関係として追加 npm install --save-dev <パッケージ名> ## または npm install -D <パッケージ名> # 特定のバージョンを指定してインストール npm install <パッケージ名>@<バージョン> # 複数のパッケージを同時にインストール npm install <パッケージ1> <パッケージ2> <パッケージ3>
インストールされているパッケージを更新する。
# 全てのパッケージを更新 npm update # 特定のパッケージを更新 npm update <パッケージ名> # メジャーバージョンを含む更新 (慎重に実行すること) npm update --save
パッケージをアンインストールする。
npm uninstall <パッケージ名> # または npm un <パッケージ名>
インストールされているパッケージの一覧を表示する。
# ツリー形式で表示 npm list # トップレベルのパッケージのみ表示 npm list --depth=0 # グローバルにインストールされているパッケージを表示 npm list -g --depth=0
パッケージに関する情報を表示する。
npm info <パッケージ名> # 特定のフィールドのみ表示 npm info <パッケージ名> version npm info <パッケージ名> dependencies
package.jsonに定義されているスクリプトを実行する。
npm run スクリプト名 # 例:テストスクリプトを実行 npm run test # または短縮形 npm test # 例:ビルドスクリプトを実行 npm run build
パッケージの脆弱性をチェックする。
# 脆弱性の確認 npm audit # 脆弱性の自動修正 (可能な場合) npm audit fix
ローカルインストールとグローバルインストール
npmでは、パッケージをローカル または グローバルにインストールできる。
- ローカルインストール
- デフォルトのインストール方法であり、カレントディレクトリ直下のnode_modulesディレクトリにパッケージが保存される。
- これにより、プロジェクトごとに異なるバージョンのパッケージを使用できるメリットがある。
# ローカルインストール npm install mermaid # インストール後のディレクトリ構造 . ├── node_modules/ # インストールされたパッケージ群のディレクトリ │ └── mermaid/ # mermaidパッケージ │ └── ... # その他の依存パッケージ ├── package.json # プロジェクトの設定と依存関係 └── package-lock.json # 依存関係の詳細情報
※注意
プロジェクトごとに独立したnode_modulesディレクトリが生成される。
package.jsonファイルが無い状態でインストールすると警告が表示されるため、事前にnpm initを実行することを推奨する。
また、バージョン管理システムで公開する場合は、.gitignoreファイルにnode_modulesディレクトリを追加することが推奨される。
プロジェクトを共有する場合は、package.jsonファイルおよびpackage-lock.jsonファイルを含める必要がある。
- グローバルインストール
-gオプションを指定することで実行される。- グローバルにインストールされたパッケージは、システム全体で使用できるコマンドラインツールとして機能する。
# グローバルインストール npm install -g typescript # 複数のパッケージを同時にグローバルインストール npm install -g typescript eslint prettier
グローバルインストールディレクトリは、デフォルトでは以下に示す場所となる。
# Node.jsをシステムにインストールした場合 /usr/local/lib/node_modules /usr/local/bin # nvmを使用している場合 ~/.nvm/versions/node/v<バージョン>/lib/node_modules ~/.nvm/versions/node/v<バージョン>/bin # nodenvを使用している場合 ~/.nodenv/versions/<バージョン>/lib/node_modules ~/.nodenv/versions/<バージョン>/bin # fnmを使用している場合 ~/.local/share/fnm/node-versions/v<バージョン>/installation/lib/node_modules ~/.local/share/fnm/node-versions/v<バージョン>/installation/bin
グローバルインストールディレクトリを変更することもできる。
# npmのグローバルディレクトリを作成
mkdir -p ~/.npm-global
# npmの設定を変更
npm config set prefix '~/.npm-global'
# 環境変数PATHの設定 (~/.profileファイル等に追記)
export PATH="$HOME/.npm-global/bin:$PATH"
現在の設定を確認する。
# グローバルインストールディレクトリの確認 npm config get prefix # 全てのnpm設定の確認 npm config list # 設定の詳細を表示 npm config list -l
npmのキャッシュ管理
npmは、ダウンロードしたパッケージをローカルにキャッシュすることで、インストール速度を向上させている。
キャッシュに関連する操作は以下の通りである。
# キャッシュの場所を確認 npm config get cache # キャッシュをクリア npm cache clean --force # キャッシュの整合性を確認 npm cache verify
package.json / package-lock.json
package.jsonファイルは、プロジェクトのメタデータと依存関係を定義する重要なファイルである。
このファイルには、プロジェクト名、バージョン、説明、依存パッケージのリスト、スクリプトコマンド等が含まれる。
package.jsonの主要なフィールドは以下の通りである。
{
"name": "プロジェクト名",
"version": "1.0.0",
"description": "プロジェクトの説明",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"express": "^4.18.0"
},
"devDependencies": {
"jest": "^29.0.0"
},
"engines": {
"node": ">=22.0.0"
}
}
package-lock.jsonファイルは、インストールされた依存関係の正確なバージョンツリーを記録する。
このファイルにより、チームメンバーや異なる環境で同一の依存関係がインストールされることが保証される。
package-lock.jsonファイルは自動生成されるため、手動で編集する必要はなく、バージョン管理システムにコミットすることが推奨される。
npmの高度な機能
npmには、プロジェクト管理を効率化するための高度な機能が用意されている。
モノレポ構成の管理
npmワークスペース機能を使用することで、モノレポ構成を管理できる。
{
"name": "my-monorepo",
"workspaces": [
"packages/*"
]
}
開発中のパッケージのテスト
npm linkコマンドを使用することで、ローカルで開発中のパッケージをテストできる。
# パッケージディレクトリでリンクを作成 cd /path/to/my-package npm link # プロジェクトディレクトリでリンクを使用 cd /path/to/my-project npm link my-package
CI/CD環境での依存関係のインストール
npm ciコマンドを使用することで、CI/CD環境での依存関係のインストールを高速化できる。
このコマンドは、package-lock.jsonファイルに基づいて依存関係をインストールして、package.jsonファイルとの不整合がある場合はエラーを返す。
npm ci
更新可能なパッケージの確認
npm outdatedコマンドを使用することで、更新可能なパッケージを確認できる。
npm outdated