1. tonkotsuboy_com

    No comment

    tonkotsuboy_com
Changes in body
Source | HTML | Preview
@@ -1,197 +1,197 @@
サーバーサイドで動作するJavaScript[Node.js](https://nodejs.org/en/)はSassのコンパイル、webpackの使用等、今やフロントエンド開発に欠かせないものです。**Node.jsを使う場合、バージョンを自動で切り替えられる [ndenv](https://github.com/riywo/ndenv)というツールがお薦めです。**本エントリーではndenvのメリットと、基本的な使い方について解説します。
# Node.jsのバージョン管理
プロジェクトによっては古いNode.jsのバージョンで動作が安定し、違うNode.jsにしてしまうと動作しなくなる、といったケースは現場でよくあります。しかし、プロジェクトを切り替える度、**現在のNode.jsをアンイストールして目的のバージョンのNode.jsをインストールする、というのは時間がかかります**。
このようなNode.jsのバージョン問題を解決するため、Node.jsのバージョン管理をするツールとしてmacOSの「[Nodebrew](https://github.com/hokaccha/nodebrew)」があります。
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のバージョン切り替えコマンドを実行するというのが手間です**。
この手間を省くのが、ndenvです。
# 自動でNode.jsのバージョンを切り替えるndenv
**ndenvを用いると、プロジェクトに移動するだけでNode.jsのバージョンが自動で切り替わります**。手動でNode.jsのバージョンを切り替える必要が無いため、開発者はNode.jsのバージョン問題に時間を取られることなく、作業を進められます。
## インストール方法
ndenvのインストールには、「[anyenv](https://github.com/riywo/anyenv)」というツールを用いるのが便利です。ndenvの他にも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)」が参考になります。
anyenvのインストールが完了したら、次のコマンドで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)
# デフォルトで使用するNode.jsのバージョンも指定しておく
バージョンを固定したプロジェクトフォルダ以外では、特にバージョン指定せずにNode.jsを使いたい場合もあるでしょう。その場合は、デフォルトで使用するNode.jsのバージョンを指定しておくと便利です。
```bash:コマンド
ndenv global (デフォルトで使用したいバージョン)
```
-えば、7.9.0をデフォルトバージョンにするには、次のようにします。
+たとえば、7.9.0をデフォルトバージョンにするには、次のようにします。
```bash:コマンド
ndenv global v7.9.0
```
# Windowsではnodistで自動バージョン切り替え
ndenvはmacOS用ですが、[nodist](https://github.com/marcelklehr/nodist)を使うとWindowsでも`.node-version`によるNode.jsの自動バージョン切り替えが可能です。Windows、macOS問わず、Node.jsのバージョン自動切り替えができるのは嬉しいですね。
※ 本エントリーのコメント欄にて、 @Jaman1993 さんより教えていただきました。
# ndenvは便利
複数のプロジェクトを開発するにあたって、Node.jsのバージョン管理ツールは必須。筆者は主に[Nodebrew](https://github.com/hokaccha/nodebrew)を使っていましたが、**プロジェクトごとにバージョンを自動で切り替えたいと思い、ndenvを使うようになりました**。おかげでプロジェクト毎にNode.jsのバージョンを意識する必要がなくなり、時間短縮に繋がりました。お勧めです。