🤖

nodenv導入しようぜ 〜anyenvを使用して〜

2022/12/05に公開

対象の読者

  • 駆け出し、初心者の方
  • Node.jsをWebサイト(パッケージ版)やHomebrew, Nodebrew経由でダウンロードして使っている方

始めに

  • 使用環境
    • Apple M1 Max
    • macOS Monterey バージョン12.6
    • zsh

なぜ今更こういった記事を書くのか?ググれば色んな記事が出てくるよ?という声が聞こえてきそうですが、私自身anyenv-nodenv-Node.jsの導入までかなり時間がかかりました。(トータル10時間位)
理由はpathやshellなどの前提知識がなかったためです。
当初の私と同じく初心者の方はpathとかshellなどわからないことがたくさんあるかと思うので周辺知識も加味して解説したいと思ってます。(shell, pathの記事はComming soon)
また単純にnodenvをインストールして終わりではなく後述する記事で触れているanyenv経由でのインストールを解説します。
私みたいに時間をかけずにサクッと導入してしまいましょう!

What's nodenv?

読み方はノードエンブ(と教わりました)。
簡単に言うとNode.jsのバージョン管理を楽にするツールです。
大体Node.jsを初めて使う状況になるとNode.jsのWebサイトでパッケージ版をダウンロードしてくるかと思います。
「え、Node.jsってWebサイトからダウンロードすれば良いんじゃないの?」って思った方、私もそうでした。
私はWeb制作から学習を始めた身なのでNode.jsを最初に使ったのがgulpの導入からでして、その時はNode.jsをWebサイトからダウンロードしていました。
確かに個人のみで開発したり、新規の案件のみ開発していればそれでもOKです。
しかしチーム開発や過去案件の保守などで現在導入しているバージョンをダウングレードしなければならない時や、案件を複数こなしていてバージョンを頻繁に切り替えなければならないに時に面倒になってきます。

例えばチーム案件にジョインした際、package.jsonに下記のような記述があ場合はそのバージョンでしか動かないということを意味していますので、ご自信が使っているNode.jsのバージョンと異なる場合は切り替えないとエラーがでます。

package.json
// Node.jsのバージョンが16台のものしか動かない
  "engines": {
    "node": "16"
  }

そういったバージョン切り替えの面倒さを解決してくれるのがnodenvなどのバージョンマネージャーツールです。
公式:nodenv GitHub

これは便利!よし、じゃあ早速nodenv GitHubからnodenvをインストールするぞ!となるかもしれませんがちょっと待ってください。
この先Node.jsだけ使用するならそれでも良いかもしれませんが、他にもgolangを管理するgoenv、pythonを管理するpyenvなど数多くバージョンマネージャーがあります。
これらを一つ一つ導入するのは各env系ツールに対してpathを通さなければならず、手間です。

そこでそれらのバージョンマネージャーを管理するツールであるanyenvの出番です。
下記の記事をご覧ください。

https://zenn.dev/mackie/articles/0dce1eda8c1d1d

anyenvを使用したnodenvのダウンロード方法

さて、anyenvを導入できたらそれを使用してnodenvをインストールするのは至極簡単です。

anyenv install nodenv

以上です!

インストールされたかどうか確認してみましょう。
一旦shellを再起動してください。

// shell再起動コマンド
exec $SHELL -l

再起動後、下記コマンドでanyenv経由でインストールされていることがわかります。

nodenv root
/Users/"your_name"/.anyenv/envs/nodenv

上記のようにanyenv配下にnodenvがあることが確認できたら成功です。

nodenv経由でのNode.jsインストール方法、バージョン切り替え方法

  1. nodenvでインストールできるバージョンを確認
nodenv install -l
・
・
16.16.0
17.0.0
17.0.1
・
・
  1. nodenv経由でNode.jsをインストール
// Node.js 16.16.0と18.12.1のバージョンをインストールする場合
nodenv install 16.16.0
nodenv install 18.12.1
  1. デフォルトで使用したいバージョンはglobalに設定する
// 今回はglobalに16.16.0を設定
nodenv global 16.16.0

// 確認
nodenv versions
* 16.16.0 (set by /Users/{user_name}/.anyenv/envs/nodenv/version)
  18.12.1

// *がついているのが現在のバージョンです(別記事で解説しているanyenv経由でnodenvをインストールしているのでます)

現在globalに16.16.0をセットしていますが、最新のprojectでは18.12.1を使用したいといった場合、ルートディレクトリに.node-versionというファイルをおき以下のように記載します。

18.12.1

こうすることでそのリポジトリで作業している際は勝手にバージョンが切り替わってくれます。
ぜひ node -vコマンドで確認してみてください。

まとめ

  • nodenvはNode.jsのバージョン管理を便利にするツール
  • nodenvはanyenv経由でインストールすると楽
  • anyenvが導入出来さえすればnodenvはすぐにインストール可能
  • nodenvを導入して素敵な開発体験を

この記事を書き終えた今、私が師匠から言われた言葉を思い出しています。
「駆け出し時期は必要な知識が多くて最初は点の知識が増えていく。しかし継続して学習すればそれらが繋がって線の知識になっていく。」
最初は「わからないことをググるとさらにわからないことが出てきて、それについてまたググるとまたまたさらに・・・」の繰り返しかと思います。
今回のnodenvも導入当初その状況に陥りましたが今では見える世界が変わってきています。
皆さんも諦めず、一つ一つ理解して線の知識を増やしていきましょう!

Discussion