nvmを使用してNode.jsのversionを管理する
New PCにしたので、前から気になっていた nvm を使用してNode.jsのversionを管理できるようにしました。
ググればいっぱいよさげな記事が出てきますが、せっかく調べたりしたので...まとめます!!
※ 「Docker使えばversion管理ツールなんていらないじゃん?🔪」っということを思われるかもしれませんが、Docker使った開発の方法は、別でまとめようと思っています。
間違いなどありましたら、ご指摘いただけると嬉しいです。よろしくお願いします🙇♂️
前提条件
※ bashを使用した説明のみとします。
※ 既にbashrcが作成されているとします。ない場合は、ターミナル上でtouch ~/.bashrc
を実行して作成してください。
※ .bashrcの変更ができる人を対象としています。
環境
- macOS Mojave(10.14.4)
なぜnvm?
Node.jsのversionを管理する方法は他にもいくつかあります。
以前はnodebrewを使っていました。とても使いやすかったです。
では今回なぜnvmにしたかと言いますと、
- プロジェクト毎にversion管理したい
- みんな使っている
というのが理由です。
例えば、
「AWSのLambdaではNode.jsは8.10使いたいけど、こっちのプロジェクトはサーバとして使いたいから、最新版を使いたい!」
というようなケースが出てきたからです。😇
nvm導入
それではインストールしていきます。
なお作業ディレクトリは、ホームディレクトリ(~/
)で行います。
install
ターミナルを起動して、以下をコピペしてEnterキーを押してください。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
そうするとダウンロードがはじまり、以下のように出力されます。※ユーザ名はユーザ名
に変えています。
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 13226 100 13226 0 0 43993 0 --:--:-- --:--:-- --:--:-- 44086 => Downloading nvm from git to '/Users/ユーザ名/.nvm' => Cloning into '/Users/ユーザ名/.nvm'... remote: Enumerating objects: 278, done. remote: Counting objects: 100% (278/278), done. remote: Compressing objects: 100% (249/249), done. remote: Total 278 (delta 33), reused 88 (delta 16), pack-reused 0 Receiving objects: 100% (278/278), 142.36 KiB | 1.48 MiB/s, done. Resolving deltas: 100% (33/33), done. => Compressing and cleaning up git repository => Appending nvm source string to /Users/ユーザ名/.bashrc => Appending bash_completion source string to /Users/ユーザ名/.bashrc => Close and reopen your terminal to start using nvm or run the following to use it now: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
/Users/ユーザ名/.nvm
に保存されました✌️
~/.bashrcを編集
~/.bashrcに追加します。
# nvmの設定 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
.bashrcを読み込み
変更を反映させます。
source .bashrc
nvm
コマンドが使用できるか確認します。
nvm --version
以下のようにnvmのバージョンが出力さればOKです👌
0.34.0
Node.jsをinstall
1. 利用可能なversionを確認してみる
それではv8.10.0と最新版をinstallします。まずは、利用できるversionを確認します。
nvm ls-remote
v8.10.0と最新版(2019/5/2現在はv12.1.0)が利用できることがわかります。
2. installしてみる
最新版
nvm install node
version指定
nvm install 8.10.0
※ 最初にinstallされたversionがdefaultとなります。あとでdefaultは変更できます。
3. installしたversion一覧を確認してみる
~$ nvm ls -> v8.10.0 v12.1.0 default -> node (-> v12.1.0) node -> stable (-> v12.1.0) (default) stable -> 12.1 (-> v12.1.0) (default) iojs -> N/A (default) unstable -> N/A (default) lts/* -> lts/dubnium (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.17.1 (-> N/A) lts/carbon -> v8.16.0 (-> N/A) lts/dubnium -> v10.15.3 (-> N/A)
現在はv8.10.0を使用しています。
4. versionを変更してみる
versionを変更してみます。コマンドは以下の通りです。
nvm use <version>
それではv12.1.0
に変更してみます。
~$ nvm use 12.1.0 Now using node v12.1.0 (npm v6.9.0) ~$ node -v v12.1.0
変更できました!😀
5. .nvmrcを使用してみる
プロジェクトのルートディレクトリに.nvmrc
を作成することで、Node.jsのversionを固定することが可能です。
例えば、
lambda-sampleというプロジェクトを作成し、そのプロジェクトではversionを8.10.0で固定化したい場合は、
~$ node -v # 12.1.0がデフォルトのversionとなっています。 v12.1.0 ~$ mkdir lambda-sample ~$ cd lambda-sample lambda-sample$ echo "8.10.0" > .nvmrc # version指定(nvmが理解できる文字列でも可能 ex. lts/*) lambda-sample$ nvm use Found '/Users/ユーザ名/lambda-sample/.nvmrc' with version <8.10.0> Now using node v8.10.0 (npm v5.6.0) lambda-sample$ node -v v8.10.0
切り替わりました! 😊
6. 自動で切り替えてみる
.nvmrc
で設定したversionに切り替えるにはnvm use
を実行する必要があります。
そうです。
自動で切り替えしたい!😇
エンジニアなら誰もがそう思うと思います。私もそう思います。
自動で切り分ける方法として、公式のREADMEには2つの方法が載っています。
- avnを使用する
- ~/.bashrcにREADMEに載っているレシピを追加する
今回は、.bashrc
にレシピを追加する方法にします。軽量という言葉に弱い...
※ READMEに書いてありますが、この追加するレシピはnvmの開発チームはサポートしていません。nvmのユーザから提供されたものです。(素晴らしい🎉)
レシピをコピーします
公式のREADMEから追加する内容をコピーしてきます。(レシピが長いのでリンクで対応しました。)
~/.bashrcを編集します
lambda-sample$ cd # ホームディレクトリに移動します。 ~$
~/.bashrcにコピーしたレシピを追加します。
## nvm use を自動で呼ぶ設定 find-up() { ...
.bashrcを再読み込みします
変更を反映させます。
source .bashrc
確認します
現在のNode.jsのversionを確認します。
~$ node -v v8.10.0
5. .nvmrcを使用してみる
で切り替えたNode.jsのversionのままです。
では自動的に変更されるか確認してみます。
~$ cd Now using node v12.1.0 (npm v6.9.0)
.nvmrc
がないのでデフォルトのv12.1.0に切り替わりました🎉
defaultを変更してみる
一番最初にinstallされたversionがデフォルトになってしまうので、defaultを変更します。
~$ nvm alias default 8.10.0 default -> 8.10.0 (-> v8.10.0)
OK👌
以上でNode.jsのversionをnvmで管理できるようにしました。
より知りたいという方は、公式のREADMEを見たり、nvm --help
を見てください。