1. tonkotsuboy_com

    Posted

    tonkotsuboy_com
Changes in title
+Node.jsのバージョンを自動で切り替えられるnodenvが超便利
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,179 @@
+サーバーサイドで動作するJavaScript[Node.js](https://nodejs.org/en/)はSassのコンパイル、webpackの使用等、今やフロントエンド開発に欠かせないものです。**Node.jsを使う場合、バージョンを自動で切り替えられる [nodenv](https://github.com/nodenv/nodenv)というツールがお薦めです。**本エントリーではnodenvのメリットと、基本的な使い方について解説します。
+
+# Node.jsのバージョン管理
+プロジェクトによっては古いNode.jsのバージョンで動作が安定し、違うNode.jsにしてしまうと動作しなくなる、といったケースは現場でよくあります。しかし、プロジェクトを切り替える度、**現在のNode.jsをアンイストールして目的のバージョンのNode.jsをインストールする、というのは時間がかかります**。
+
+このようなNode.jsのバージョン問題を解決するため、Node.jsのバージョン管理をするツールとしてmacOSの「[Nodebrew](https://github.com/hokaccha/nodebrew)」やWindowsの「[nodist](https://github.com/marcelklehr/nodist)」があります。
+
+例えばNodebrewを用いると、下記のようにプロジェクト毎にバージョンを切り替えることができます。
+
+```bash:コマンドライン
+nodebrew use v0.10.12
+```
+
+▲ Node.jsのv0.10.12を使う
+
+```bash:コマンドライン
+nodebrew use v7.9.0
+```
+
+▲ Node.jsのv7.9.0を使う
+
+これで充分便利なのですが、**Node.jsのバージョン切り替えコマンドを実行するというのが手間です**。
+
+この手間を省くのが、nodenvです。
+
+# 自動でNode.jsのバージョンを切り替えるnodenv
+**nodenvを用いると、プロジェクトに移動するだけでNode.jsのバージョンが自動で切り替わります**。手動でNode.jsのバージョンを切り替える必要が無いため、開発者はNode.jsのバージョン問題に時間を取られることなく、作業を進められます。
+
+## インストール方法
+nodenvのインストールには、「[anyenv](https://github.com/riywo/anyenv)」というツールを用いるのが便利です。nodenvの他にもPHPのバージョン管理をする[phpenv](https://github.com/phpenv/phpenv)、Swiftのバージョン管理をする[swiftenv](https://github.com/kylef/swiftenv)といったバージョン管理ツールが存在するのですすが、anyenvとは「〜env」と名前のついた各バージョン管理ツールをまとめて扱うものです。
+
+インストールはコマンドラインを使いますが、コピペだけでできるので手軽です。以下のコマンドを一行ずつ実行してください。
+
+```bash
+git clone https://github.com/riywo/anyenv ~/.anyenv
+```
+
+```bash
+echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
+```
+
+```bash
+echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
+```
+
+```bash
+exec $SHELL -l
+```
+
+なお、[公式リポジトリ](https://github.com/riywo/anyenv)においては、上記コマンドの`bash_profile`部分が`your_profile`となっていますが、`bash_profile`でインストールして問題ありません。`bash_profile `については記事「[.bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの? - Qiita](http://qiita.com/hirokishirai/items/5a529c8395c4b336bf31)」が参考になります。
+
+anydenvのインストールが完了したら、次のコマンドでndenvをインストールします。
+
+```bash:コマンド
+anyenv install ndenv
+```
+
+```bash:コマンド
+exec $SHELL -l
+```
+
+下記のコマンドを実行し、バージョン番号等が表示されれば成功です。
+
+```bash:コマンド
+ndenv
+```
+
+![image](https://qiita-image-store.s3.amazonaws.com/0/67884/666f90ef-4cf0-c3c7-fd45-767bd34a184b.png)
+
+以上でndenvの環境が準備できました。
+
+# プロジェクト毎のNode.jsバージョン切り替え例
+では、ndenvを使って下記のようにプロジェクトごとにNode.jsのバージョン切り替えを行ってみます。
+
+- プロジェクトAではNode.js v7.9.0を使う
+- プロジェクトBではNode.js v0.12.18を使う
+
+## Node.jsのインストール
+Node.jsのインストールには、次のコマンドを用います。
+
+```bash:コマンド
+ndenv install (バージョン)
+```
+
+今回の例では、v7.9.0と v0.12.18が必要なので、次のようにインストールします。
+
+```bash:v7.9.0のインストールコマンド
+ndenv install v7.9.0
+```
+
+```bash:v0.12.18のインストールコマンド
+ndenv install v0.12.18
+```
+
+## プロジェクトAで使用するNode.jsのバージョン設定
+プロジェクトで使用するNode.jsのバージョンを設定するには、次のコマンドを用います。
+
+```bash:コマンド
+ndenv local (バージョン)
+```
+
+プロジェクトA用のフォルダにて、v7.9.0を使う設定をします。
+
+```bash:プロジェクトAフォルダに移動コマンド
+cd (プロジェクトAフォルダへのパス)
+```
+
+```bash:v7.9.0の使用コマンド
+ndenv local v7.9.0
+```
+
+Node.js v7.9.0が使えるかどうかをチェックしてみましょう。次のコマンドでNode.jsのバージョンを確認します。
+
+```bash:Node.jsのバージョン確認コマンド
+node -v
+```
+
+v7.9.0のバージョン番号が出力されていれば成功です。
+
+![](https://qiita-image-store.s3.amazonaws.com/0/67884/eaa13b83-ce13-21e9-13be-5c55daeee8af.png)
+
+これまでNode.jsを使用してきていたのと同じく、`npm`コマンドも使用できます。
+
+ところで、`local`コマンドを実行すると、プロジェクトフォルダ内に`.node-version`という設定ファイルができます。**`.node-version`にはこのプロジェクトで使用するNode.jsのバージョンが記述されているため、このフォルダに移動した時に、自動的にバージョンが切り替わる仕組みになっているのです**。
+
+![image](https://qiita-image-store.s3.amazonaws.com/0/67884/a340fbbf-df01-dc60-a3ab-c217845b7544.png)
+
+▲ .node_versionファイルの中身
+
+## プロジェクトBでの設定
+プロジェクトBではv0.12.18を使う設定をします。
+
+```bash:プロジェクトBフォルダに移動コマンド
+cd (プロジェクトBフォルダへのパス)
+```
+
+```bash:v.0.12.18の使用コマンド
+ndenv local v0.12.18
+```
+
+Node.js v0.12.18に切り替わっているか確認してみましょう。
+
+```bash:Node.jsのバージョン確認コマンド
+node -v
+```
+
+v0.12.18が表示されていれば成功です。
+
+![](https://qiita-image-store.s3.amazonaws.com/0/67884/69cc6a5c-3733-bb77-4291-ab8ef5428896.png)
+
+## フォルダを移動してバージョンが自動で切り替わるかを確認する
+Node.jsのバージョンが自動で切り替わるか確認をしてみましょう。
+
+```bash:プロジェクトAフォルダに移動コマンド
+cd (プロジェクトAフォルダへのパス)
+```
+
+```bash:Node.jsのバージョン確認
+node -v
+```
+
+プロジェクトAで使用するNode.js v7.9.0に切り替わります。
+![](https://qiita-image-store.s3.amazonaws.com/0/67884/36b38749-f0f6-ac22-7389-7f9ba4201ce6.png)
+
+
+```bash:プロジェクトBフォルダに移動コマンド
+cd (プロジェクトAフォルダへのパス)
+```
+
+```bash:Node.jsのバージョン確認
+node -v
+```
+
+プロジェクトBで使用するNode.js v0.12.18に切り替わります。
+
+![image](https://qiita-image-store.s3.amazonaws.com/0/67884/cdab82cc-c624-981f-a87a-5c62335e7e19.png)
+
+# ndenvは便利
+複数のプロジェクトを開発するにあたって、Node.jsのバージョン管理ツールは必須。筆者は主に[Nodebrew](https://github.com/hokaccha/nodebrew)を使っていましたが、**プロジェクトごとにバージョンを自動で切り替えたいと思い、ndenvを使うようになりました**。おかげでプロジェクト毎にNode.jsのバージョンを意識する必要がなくなり、時間短縮に繋がりました。お勧めです。