nodenvコマンド早見表はこちら
プロジェクトごとにNode.jsのバージョンを管理できる
nodebrewだとnodebrew use [バージョン番号]
みたいに切り替えるのが大変ですが、nodenvだと簡単にできるっぽいのでこっちを使ってみます。
いろいろなプロジェクトに関わってくるとこういうのがすごくありがたい。
開発者の方に感謝です。
インストールの流れ
- Homebrewのインストール
- anyenvのインストール
- nodenvのインストール
- Node.jsのインストール
・Homebrew
HomebrewはMac用のパッケージマネージャ。
ツールのインストールとか諸々を管理してくれます。
http://brew.sh/index_ja.html
nodebrewをインストールするためにHomebrewを使います。
・nodenv
順番前後しますが、これがメイン。Node.jsのバージョン管理ツール。
https://github.com/nodenv/nodenv
・anyenv
様々なenv系ツールをまとめてくれるらしい。
https://github.com/anyenv/anyenv
他のenv系ツールも含めてインストールを管理してくれるので便利です。
ということでanyenvを使ってみます。
Homebrewインストール
まずはHomebrewから。
Mac使ってるとこれはまあ外せない。
もうインストール済みって人はスキップで。
http://brew.sh/index_ja.html にあるスクリプトを実行する。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
※ 2019/12/23現在は上記
インストール後は以下コマンドでHomebrewのバージョンが確認できます。
brew -v
私の場合は以下でした。
Homebrew 2.1.11
Homebrew/homebrew-core (git revision be0385; last commit 2019-09-12)
Homebrew/homebrew-cask (git revision d34609; last commit 2019-09-12)
nodebrew使っている場合
現在nodebrewを使っている場合、nodebrew用に設定していた環境変数をコメントアウトします。
nodebrewを使っていた人はこちらをやっておいたほうがベター。
使ったことないって人はスキップでOKです。
私の場合、nodebrewが優先になるように記述していたのでコメントアウトしました。
vi ~/.zprofile
# export PATH=$HOME/.nodebrew/current/bin:$PATH
# ↑この部分をコメントアウト
viを使ってコメントアウトしました。
まあ、テキストエディタならなんでも良いと思うので適宜使いやすいやつを使ってください。
anyenvインストール
Homebrewを使ってanyenvインストール
さっそくインストールしていきましょう。
brew install anyenv
そして初期化
anyenv init
# Load anyenv automatically by adding
# the following to ~/.zshrc:
eval "$(anyenv init -)"
指示通りに~/.zshrc
に追記
echo 'eval "$(anyenv init -)"' >> ~/.zshrc
ターミナルをリロードしてみます。
exec $SHELL -l
ANYENV_DEFINITION_ROOT(/Users/whoami/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init
You'll see a warning if you don't have manifest directory.
ディレクトリが無いと怒られているので、マニフェストディレクトリ作ります。
マニュフェストディレクトリを作る
指示に通りanyenv install --init
と打ってみます。
anyenv install --init
Manifest directory doesn't exist: /Users/whoami/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/whoami/.config/anyenv/anyenv-install...
Cloning into '/Users/whoami/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 48, done.
remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
Unpacking objects: 100% (48/48), done.
途中check outするかってきたので「y」で承諾します。
再度ターミナルのリロードexec $SHELL -l
するとエラーが解消されていることがわかります。
※以下のようなエラーが出る場合があるようです。
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/xxxxxx/.config/anyenv/anyenv-install...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
CommandLineToolsがインストールされていないようなので以下のコマンドを実行してインストールしてから再度、anyenv install --init
を実行してください。
% xcode-select --install
nodenvをインストール
さっそくanyenvでやってみましょう!
anyenv install nodenv
を実行すればnodenvがインストールできます。
anyenv install nodenv
/var/folders/sn/v1hx7kls3t3f2d9s2r40krns6qc63m/T/nodenv.20191223143232.16265 ~
Cloning https://github.com/nodenv/nodenv.git master to nodenv...
Cloning into 'nodenv'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 3915 (delta 4), reused 13 (delta 2), pack-reused 3897
Receiving objects: 100% (3915/3915), 696.59 KiB | 1.04 MiB/s, done.
Resolving deltas: 100% (2579/2579), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/node-build.git master to node-build...
Cloning into 'node-build'...
remote: Enumerating objects: 77, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 18197 (delta 33), reused 42 (delta 11), pack-reused 18120
Receiving objects: 100% (18197/18197), 3.19 MiB | 2.46 MiB/s, done.
Resolving deltas: 100% (11638/11638), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-default-packages.git master to nodenv-default-packages...
Cloning into 'nodenv-default-packages'...
remote: Enumerating objects: 267, done.
remote: Counting objects: 100% (267/267), done.
remote: Compressing objects: 100% (151/151), done.
remote: Total 531 (delta 151), reused 202 (delta 105), pack-reused 264
Receiving objects: 100% (531/531), 113.88 KiB | 291.00 KiB/s, done.
Resolving deltas: 100% (272/272), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-vars.git master to nodenv-vars...
Cloning into 'nodenv-vars'...
remote: Enumerating objects: 211, done.
remote: Total 211 (delta 0), reused 0 (delta 0), pack-reused 211
Receiving objects: 100% (211/211), 31.82 KiB | 264.00 KiB/s, done.
Resolving deltas: 100% (76/76), done.
~
Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
インストール成功です!
最後にプロファイルのリロードして使用できるようにします。
exec $SHELL -l
env
で環境変数がどうなったかみてみます。
env
PATH=/Users/whoami/.anyenv/envs/nodenv/shims:/Users/whoami/.anyenv/envs/nodenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/sbin:/Users/k
akai/.nodebrew/current/bin
NODENV_ROOT=/Users/whoami/.anyenv/envs/nodenv
NODENV_SHELL=zsh
(他省略)
nodenvやらanyenvのパスがPATHに追加されてますね。
NODENV_ROOTとかNODENV_SHELLみたいなのも追加されてます。
これで下準備は整いました。
Node.jsのインストール
インストール可能なバージョンを見る
nodenv install -l
Nodeの最新バージョンを取得するためにanyenv-updateプラグインをインストール
nodenv install -l
を実行しても使いたい最新のNodeバージョンが一覧に表示されないことがあります。
最新のNodeバージョン使えるようにするためにanyenv-updateプラグインをインストールします。
mkdir -p $(anyenv root)/plugins
git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
プラグインのインストールは上記で完了です。
以下を実行すればNodeバージョンの一覧を更新することができます。
anyenv update
Node.jsをインストール
以下を実行すれば指定したバージョンをインストールできます。
nodenv install {バージョン番号}
ちなみにアンインストールは~/.anyenv/envs/nodenv/versions
あるディレクトリを削除すれば良いようです。
以下のコマンドでインストール済みのバージョンを確認できます。
nodenv whence npm
nodenv globalでコンピュータのデフォルトに指定
nodenv global
でコンピュータのデフォルトを指定してみます。
指定できるのはインストールしたバージョンです。
nodenv global {バージョン番号}
僕は10.0.0にしてみました。
確認してみましょう。
node -v
v10.0.0
10.0.0になってることが確認できます。
nodenv localでプロジェクト指定
nodenv local
を使えばプロジェクト指定できるみたいです。
早速使ってみます。
# プロジェクトのパスに移動し
cd {プロジェクトのパス}
# 配下で実行
nodenv local {バージョン番号}
実行するとプロジェクト配下に.node-versionっていうファイルができました。
中をみるとバージョン番号が記述されてます。
{バージョン番号}
8.8.0を指定してみたので確認してみましょう。
node -v
v8.8.0
これでNodeの切り替えが楽になりました。
ちなみにnodenv shell
コマンドだとシェルごとに変えられるっぽいです。
是非みなさんも使ってみてください。
参考
nodenv
https://github.com/nodenv/nodenv
anyenv
https://github.com/anyenv/anyenv
anyenv-update
https://github.com/znz/anyenv-update