Help us understand the problem. What is going on with this article?

MacにNode.jsをインストール(anyenv + nodenv編)

プロジェクトごとにNode.jsのバージョンを管理できる!?

っていう話を聞いたのでnodenvをインストールすることにしました。
nodebrewだとnodebrew use [バージョン番号]みたいに切り替えるのが大変で。。。
nodenvだと簡単にできるっぽいのでこっちを使ってみます。
いろいろなプロジェクトに関わってくるとこういうのがすごくありがたい。
開発者の方に感謝です。

インストールの流れ

  1. Homebrewのインストール
  2. anyenvのインストール
  3. nodenvのインストール
  4. 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
nodenvだけでいいんじゃないのって思ってましたが、nodenv単体でインストールするときには環境変数など色々操作するみたいですが(そうでもない?)、anyenvを使えばあらあら簡単にインストールできるみたいです。
あと他のenv系ツール使ってたら色々把握するのに面倒だけど、anyenv使ってれば簡単に把握できるみたい。
(間違ってたらご指摘ください・・・)
ということで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)

anyenvインストール

とその前にnodebrew用に設定していた環境変数をコメントアウトします。

nodebrewを使っていた人はこちらをやっておいたほうがベターかと。
使ったことないって人はスキップでOK。
僕の場合、nodebrewが優先になるように記述していたのでコメントアウトしました。

コマンド
vi ~/.zprofile
~/.zprofile
# export PATH=$HOME/.nodebrew/current/bin:$PATH
# ↑この部分をコメントアウト

viを使ってコメントアウトしました。
まあ、テキストエディタならなんでも良いと思うので適宜使いやすいやつを使ってください。

Homebrewを使ってanyenvインストール

さっそくインストールしていきましょう。

anyenvのインストール
brew install anyenv

そして初期化

初期化コマンド
anyenv init
結果
# Load anyenv automatically by adding
# the following to ~/.zshrc:

eval "$(anyenv init -)"

うーん?つまりこの一文を ~/.zshrcに記述しろっちゅうこうとなんやな!
(たぶんbashとか使っている人は~/.bashrcとかになるのかな)

ということで~/.zshrcに追記

コマンド
echo 'eval "$(anyenv init -)"' >> ~/.zshrc

ターミナルを再起動してみます。
すると。。。

結果
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(もろちん ちん!)」で承諾してます。
これでOKかな?
あってるかどうか念のためターミナルを再起動してみたら今度はエラーが出ない!!(やったー!)

※以下のようなエラーが出る場合があるようです。

エラー
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)するか再起動しろと書いてるので、おしゃれにコマンド打ってみます。

コマンド
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.jsをインストール

以下を実行すれば指定したバージョンをインストールできます。

コマンド
nodenv install {バージョン番号}

ちなみにアンインストールは~/.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っていうファイルができました。
中をみるとバージョン番号が記述されてます。

.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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした