はじめに
自身のメモとして、本記事ではmacOSでanyenvとnodenvを活用し、Node.jsを一つのPCで複数バージョン使える環境の構築手順を記載します.
Node.jsのバージョン管理をしたい理由
Node.jsを利用した開発において、複数のプロジェクトを同一PCで開発する場合、異なるバージョンのNode.jsを利用する必要性が出てきます.anyenvを利用することで、ディレクトリごとに異なったNode.jsのバージョンの利用が出来るようになります.
出てくる登場人物
- Homebrew(ほーむぶるー)とは、macOS上で動作するパッケージ管理システムです.パッケージ管理システムとはパッケージをインストールしたりアンインストールしたい出来るシステムのことを指します.Homebrewを利用することで、Macのターミナルから簡単にパッケージの追加・削除を行うことが出来ます.
- 開発環境によって同一のプログラミング言語であっても、使用するバージョンがプロジェクトごとに異なる場合があります、プロジェクトごとに異なるバージョンを使いたいというニーズを解決するために、プログラミング言語のバージョンを切り替えられるツールを利用します.Rubyのバージョン管理をするrbenv、Pythonのバージョン管理をするpyenv、Goのバージョン管理をするgoenvなど、プログラミング言語ごとに、**envといった名称でバージョンを切り替えられるツールが存在します.anyenv(えにーえんぶ)は、これらを包括的に管理できます.本記事では、Node.jsのバージョン管理の手順を記載します現時点で利用しなくても今後利用する可能性があるため、入れておくと良いツールです.
- nodenv(のーどえんぶ)はNode.jsのバージョン管理ツールです.1つのPCに複数のNode.jsのバージョンを切り替えて使うことが出来ます.本記事ではanyenv上に、nodenvの環境を構築します.
Homebrewのセットアップ
Homebrewの公式サイトにアクセスします.公式サイトに記載のスクリプトをコピーします.
macOSのターミナルを開き、コピーしたスクリプトをペーストして、Homebrewをインストールします.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストールが正しくされたか確認します.
$ brew -v
Homebrew 3.1.12
Homebrew/homebrew-core (git revision 81f5f69157; last commit 2021-06-15)
Homebrew/homebrew-cask (git revision db78a2b6e2; last commit 2021-06-15)
anyenvのセットアップ
Homebrewを利用しanyenvをインストールします.
$ brew install anyenv
インストールされたか確認します.
$ anyenv -v
anyenv 1.1.3
シェルの設定ファイルにeval "$(anyenv init -)"
を追加します.
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
シェルを再読み込みし変更した設定を読み込みます.
$ exec $SHELL -l
下記のようなエラーメッセージが出る場合があります.
ANYENV_DEFINITION_ROOT(~/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
下記を実行し、manifest directory を作成します.~/.config/anyenv/anyenv-install
にマニフェストディレクトリが作成されます.anyenv利用するのに必要な設定ファイルだと思ってください.
$ anyenv install --init
あらためてシェルを再読み込みし変更した設定を読み込みます.
$ exec $SHELL -l
これでanyenvの設定は完了です.最後にanyenvで利用できるenv系のツールを下記で確認します.Node.js以外に、Ruby, Go、Swiftなど様々なツールのバージョン管理ができることがわかります.今回は、下記に記載のあるNode.jsのバージョン管理が出来るnodenvをインストールします.
$ anyenv install -l
Renv
crenv
denv
erlenv
exenv
goenv
hsenv
jenv
jlenv
luaenv
nodenv
phpenv
plenv
pyenv
rbenv
sbtenv
scalaenv
swiftenv
tfenv
nodenvのセットアップ
Node.jsのバージョン管理が出来るnodenvをanyenv経由でインストールします.
$ anyenv install nodenv
あらためてシェルを再読み込みし変更した設定を読み込みます.
$ exec $SHELL -l
anyenvとnodenv用のプラグインをセットアップできます.
- anyenv-update
- anyenvプラグインでnodenvを含めたenv系環境をまとめてアップデートできます
- node-default-packages
- nodenvプラグインでnpmインストール時にデフォルトでインストールしておくパッケージを指定できます.
$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ mkdir -p "$(nodenv root)"/plugins
$ git clone https://github.com/nodenv/nodenv-default-packages.git "$(nodenv root)/plugins/nodenv-default-packages"
$ touch $(nodenv root)/default-packages
$(nodenv root)/default-packages
を作成し、npmインストール時にデフォルトで入れるパッケージを指定する.
yarn
typescript
ts-node
typesync
これで、nodenvの設定も完了です.
最後に各設定ファイルの場所を確認しておきます.関連するファイルは下記の二箇所にあります.
$ ls ~/.anyenv
$ ls ~/.config/anyenv
Node.jsのセットアップ
インストール可能なnodeのバージョンを確認します.
$ nodenv install -l
Nodeをバージョン指定でインストールします.
$ nodenv install 16.3.0
デフォルトで利用するNode.jsのバージョンが設定されていないと下記のようなエラーメッセージが出ます.デフォルトで利用するNode.jsのバージョンをnodenv global <version>
で指定することでエラーメッセージは消えます.
$ node -v
nodenv: node: command not found
The `node' command exists in these Node versions:
16.3.0
デフォルで利用するNodeのバージョンを指定します.
$ nodenv global 16.3.0
$ node -v
任意のディレクトリで使用するNodeのバージョを指定する場合は下記のようになります.下記では、まだインストールされていない、14.4.0をわざとして指定します.14.4.0はインストールしていないのでエラーが出ます.
$ nodenv local 14.4.0
nodenv: version `16.0.0' not installed
14.4.0をインストールします.
$ nodenv install 14.4.0
$ node -v
14.4.0
nodenv local
を利用することで、今いるディレクトリ内において指定したバージョンのNode.jsが利用できるようになります.下記の例ですと~/temp
ではnodeの14.4.0を利用するよう設定しています.nodenv local
を利用すると、.node-version
というファイルが作成され、その中に利用するバージョンが記載されます.
$ pwd
~/temp
$ nodenv local 14.4.0
$ ls
./ ../ .node-version
$ cat .node-version
14.4.0
動作確認としてnodeのコマンドが実行出来るか確かめます.
$ node ✔ 14.4.0 at 09:14:33
Welcome to Node.js v14.4.0.
Type ".help" for more information.
> 1+1
2
> console.log('hello');
hello
anyenv update
のコマンドをanyenvのプラグインとして追加しました.これを利用すると、Nodeの最新版を取得することが出来ます.実行しないと、nodenv install -l
でインストール可能な最新のリストを取得できないので、Nodeを最新版にアップデートするときはanyenv update
を実行します.
$ anyenv update
登録しているバージョンを確認したい場合は、nodenv versions
を実行します.
$ nodenv versions 14.4.0
16.3.0 (set by ~/.anyenv/envs/nodenv/version)
また、登録しているバージョンの削除をしたい場合はnodenv uninstall
を実行します.
$ nodenv uninstall 16.3.0
nodenv: remove ~/.anyenv/envs/nodenv/versions/16.3.0? [yN] y
おわりに
本記事ではmacOSでanyenvとnodenvを活用し、Node.jsを一つのPCで複数バージョン使える環境の構築手順を記載しました.
参考
- https://www.to-r.net/media/anyenv/
- https://qiita.com/kyosuke5_20/items/eece817eb283fc9d214f
- https://qiita.com/kyosuke5_20/items/220d62e7007ae51dbb52
- https://zenn.dev/ryuu/articles/use-anyversions
- https://qiita.com/SUZUKI_Masaya/items/51366be1510f7fde7cdf
- https://www.startappdevfrom35.com/anyenv_install/
- https://shinkufencer.hateblo.jp/entry/2018/11/22/233000