Parallels Desktop ブラックフライデーセール 25%OFFGo!

MacにNode.jsをインストールしてバージョン管理する方法

Node.jsをインストールする方法

MacにNode.jsをインストールしていきます。インストールの方法はいろいろありますが、今回はバージョン管理ツールのfnmを使って、プロジェクト(ディレクトリ)ごとにNode.jsのバージョンを切り替えて使えるようにします。

前半でインストール手順、後半で詳しい説明をしています。手っ取り早く使いたいあなたは前半だけ、ちゃんと理解したいあなたは後半までご覧ください。

環境
  • Mac mini (M1, 2020)
  • macOS Monterey
  • Homebrew 3.4.5

Homebrewを使いますので、まだ導入していない場合はこちらもどうぞ。

目次

インストール

fnmのインストール

まず、Node.jsのバージョン管理ツールfnmをインストールします。

% brew install fnm
(中略)
==> Pouring fnm--1.31.0.arm64_monterey.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
  /opt/homebrew/share/zsh/site-functions
==> Summary
🍺  /opt/homebrew/Cellar/fnm/1.31.0: 11 files, 7MB
==> Running `brew cleanup fnm`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

PATHを通すための設定をします。

% echo 'eval "$(fnm env --use-on-cd)"' >> ~/.zshrc
% source ~/.zshrc

ヘルプを表示してみましょう。

% fnm help
fnm 1.31.0
A fast and simple Node.js manager

USAGE:
    fnm [OPTIONS] <SUBCOMMAND>

OPTIONS:
        --arch <ARCH>
            Override the architecture of the installed Node binary. Defaults to arch of fnm binary
            [env: FNM_ARCH]

        --fnm-dir <BASE_DIR>
            The root directory of fnm installations [env: FNM_DIR]

    -h, --help
            Print help information

        --log-level <LOG_LEVEL>
            The log level of fnm commands [env: FNM_LOGLEVEL] [default: info] [possible values:
            quiet, info, all, error]

        --node-dist-mirror <NODE_DIST_MIRROR>
            https://nodejs.org/dist/ mirror [env: FNM_NODE_DIST_MIRROR] [default:
            https://nodejs.org/dist]

    -V, --version
            Print version information

        --version-file-strategy <VERSION_FILE_STRATEGY>
            A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install`
            is called without a version, or when `--use-on-cd` is configured on evaluation [env:
            FNM_VERSION_FILE_STRATEGY] [default: local] [possible values: local, recursive]

SUBCOMMANDS:
    alias          Alias a version to a common name
    completions    Print shell completions to stdout
    current        Print the current Node.js version
    default        Set a version as the default version
    env            Print and set up required environment variables for fnm
    exec           Run a command within fnm context
    help           Print this message or the help of the given subcommand(s)
    install        Install a new Node.js version
    list           List all locally installed Node.js versions [aliases: ls]
    list-remote    List all remote Node.js versions [aliases: ls-remote]
    unalias        Remove an alias definition
    uninstall      Uninstall a Node.js version
    use            Change Node.js version

fnmの使い方

fnm list-remoteインストール可能なバージョンのリストを表示する
fnm install [VERSION]指定したバージョンのNode.jsをインストールする
fnm uninstall [VERSION]指定したバージョンのNode.jsをアンインストールする
fnm default [VERSION]デフォルトのバージョンを設定する
fnm use [VERSION]Node.jsのバージョンを切り替える。
fnm listインストール済みのNode.jsのリストを表示する

Node.jsのインストール

インストール可能なバージョンのリストを表示してみましょう。

% fnm list-remote
(中略)
v16.13.0 (Gallium)
v16.13.1 (Gallium)
v16.13.2 (Gallium)
v16.14.0 (Gallium)
v16.14.1 (Gallium)
v16.14.2 (Gallium)
v17.0.0
v17.0.1
v17.1.0
v17.2.0
v17.3.0
v17.3.1
v17.4.0
v17.5.0
v17.6.0
v17.7.0
v17.7.1
v17.7.2
v17.8.0
v17.9.0

次のコマンドで任意のバージョンの Node.jsをインストールできます。気の済むまでいくつでもインストールしてみましょう。

% fnm install v17.9.0  #バージョンを指定してインストール
% fnm install v16      #v16の最新版をインストール

デフォルトのバージョンを設定する

現在インストールされているNode.jsのリストを表示してみます。

% fnm list
* v16.14.2
* v17.9.0 default
* system

v16.14.2v17.9.0 の2つがインストールされていて、v17.9.0 がデフォルトに設定されています。

デフォルトを切り替えてみます。

% fnm default v17.9.0
% fnm list
* v16.14.2
* v17.9.0 default
* system

デフォルトで使うバージョンが切り替わりました。

プロジェクトで使用するバージョンを設定する

fnmではプロジェクトごとに使用するNode.jsのバージョンを設定しておくことができます。プロジェクトが何だかわからない人は、プロジェクト=ディレクトリだと思ってください(大ざっぱ)。

プロジェクトのディレクトリに .node-version という名前のファイルを作成して、そこにバージョンを記述します。

% cd project-a             #プロジェクトのディレクトリに移動
% fnm use v16.14.2         #バージョンを切り替える
% node -v > .node-version  #現在のバージョンを .node-version に記述
% node -v                  #バージョンを確認
v16.14.2

別のプロジェクトにも設定してみましょう。

% echo "v15.14.0" > project-b/.node-version #プロジェクトのディレクトリに .node-version を設置
% cd project-b                              #プロジェクトのディレクトリに移動
Can't find an installed Node version matching v15.14.0.
Do you want to install it? answer [y/n]: y
Installing Node v15.14.0 (x64)
Using Node v15.14.0
% node -v
v15.14.0

設定したバージョンのNode.jsがインストールされていない場合は、インストールしてくれます。嗚呼便利。

インストールと切り替えの方法は以上です。

Node.jsとは

Node.jsとはサーバサイドで動くJavaScriptである。

というのは嘘で、Node.jsはJavaScriptの実行環境です。

もともとJavaScriptというのはウェブサイトに動きを付けるためのもので、ウェブブラウザ上で動作するものでした。それを他のプログラミング言語と同じようにOS上で動作するようにしたのがNode.jsです。

クライアントサイド(ウェブブラウザ)で動作していたものなので、それとの対比でNode.jsはサーバサイドで動くのだという言い方をされますが、サーバサイドに限らず開発環境でも使われます。

Macで使うNode.jsは、まさに開発環境のJavaScript実行環境ですよね。

バージョン管理ツールは何を使うか

Node.jsは頻繁にアップデートが行われています。なので、常に最新のバージョンだけを使うというわけにはいきません。複数のバージョンをインストールしておいて、プロジェクトによって切り替えて使い分けることが必要になります。そこでバージョン管理ツールの出番となるわけです。

バージョン管理ツールに求められる機能
  • Node.jsのバージョンを切り替える(当たり前)。
  • ディレクトリ単位でバージョンを設定できる。
  • ディレクトリを移動した時に自動でバージョンが切り替わる。
  • 未インストールのバージョンを使用しようとしたら自動的にインストールする。

主なバージョン管理ツールについて機能をまとめてみました。

スクロールできます
ツールDir設定自動切替自動インストールGitHub 最終リリース
nodebrew1k2022-03-19
nvm56.8k2021-12-18
asdf14k2021-12-04
nodenv1.8k2020-07-20
fnm7.2k2022-02-16
Volta5.6k2022-03-21

GitHubの星の数と最終リリース日は2022年4月現在の情報です。

これを見ると、人気があるのはnvmですね。機能面ではfnmVoltaに軍配が上がりそうです。ネットの声を聞くとVoltaのほうが推されてる感じがするのですが、私はfnmを選びました。

というのも、Voltaは現在のところインストール可能なバージョンのリストを表示する機能とインストールしたNode.jsをアンインストールする機能が実装されていないんですね。今後のアップデートに期待です。

パッケージ管理ツールは何を使うか

パッケージ管理ツールは何を使うか問題です。みんなが悩んでいます。

npmはNode.jsに同梱されていてすぐに使えます。yarnはnpmよりも高速でセキュリティも高いです。いや、最近はnpmもyarnの良いところをパク取り入れて頑張ってるよ。pnpmなんてのもあるよ。

高速に動作するツールを使えば時間を節約できますが、そもそもパッケージ管理ツールを使う時間ってプロジェクトを開発する時間全体のうちどれくらいでしょう。

悩む時間 > 節約できる時間

ということになるのもバカバカしいので、私は考えるのをやめてnpmを使います。

でわでわ

Node.jsをインストールする方法

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次