7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

anyenvとnodenvでNode.jsのバージョンを管理

Last updated at Posted at 2021-06-16

はじめに

自身のメモとして、本記事ではmacOSでanyenvとnodenvを活用し、Node.jsを一つのPCで複数バージョン使える環境の構築手順を記載します.

Node.jsのバージョン管理をしたい理由

Node.jsを利用した開発において、複数のプロジェクトを同一PCで開発する場合、異なるバージョンのNode.jsを利用する必要性が出てきます.anyenvを利用することで、ディレクトリごとに異なったNode.jsのバージョンの利用が出来るようになります.

出てくる登場人物

Homebrew

  • Homebrew(ほーむぶるー)とは、macOS上で動作するパッケージ管理システムです.パッケージ管理システムとはパッケージをインストールしたりアンインストールしたい出来るシステムのことを指します.Homebrewを利用することで、Macのターミナルから簡単にパッケージの追加・削除を行うことが出来ます.

anyenv

  • 開発環境によって同一のプログラミング言語であっても、使用するバージョンがプロジェクトごとに異なる場合があります、プロジェクトごとに異なるバージョンを使いたいというニーズを解決するために、プログラミング言語のバージョンを切り替えられるツールを利用します.Rubyのバージョン管理をするrbenv、Pythonのバージョン管理をするpyenv、Goのバージョン管理をするgoenvなど、プログラミング言語ごとに、**envといった名称でバージョンを切り替えられるツールが存在します.anyenv(えにーえんぶ)は、これらを包括的に管理できます.本記事では、Node.jsのバージョン管理の手順を記載します現時点で利用しなくても今後利用する可能性があるため、入れておくと良いツールです.

nodenv

  • nodenv(のーどえんぶ)はNode.jsのバージョン管理ツールです.1つのPCに複数のNode.jsのバージョンを切り替えて使うことが出来ます.本記事ではanyenv上に、nodenvの環境を構築します.

Homebrewのセットアップ

Homebrewの公式サイトにアクセスします.公式サイトに記載のスクリプトをコピーします.

_2021-06-15_3.24.26.png

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で複数バージョン使える環境の構築手順を記載しました.

参考

  1. https://www.to-r.net/media/anyenv/
  2. https://qiita.com/kyosuke5_20/items/eece817eb283fc9d214f
  3. https://qiita.com/kyosuke5_20/items/220d62e7007ae51dbb52
  4. https://zenn.dev/ryuu/articles/use-anyversions
  5. https://qiita.com/SUZUKI_Masaya/items/51366be1510f7fde7cdf
  6. https://www.startappdevfrom35.com/anyenv_install/
  7. https://shinkufencer.hateblo.jp/entry/2018/11/22/233000
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?