はじめに

ディレクトリ(プロジェクト)ごとに Node.js のバージョンを変更したかったので、管理ツールを調べた。

TL;DR

  • nodenv を使えば、ディレクトリごとに Node.js のバージョンを管理できる
  • nodenv install <version> で Node.js の指定バージョンをインストール
  • nodenv local <version> でそのディレクトリで使う Node.js のバージョンを固定

目的・やったこと

ディレクトリ(プロジェクト)ごとに Node.js のバージョンを変更したかったので、管理ツールを調べた。

目次

  1. はじめに
  2. TL;DR
  3. 目的・やったこと
  4. 環境・条件
  5. 詳細
    1. 下準備(飛ばして OK)
    2. セットアップ
    3. 使い方(概要)
      1. ヘルプ表示
      2. インストール済み一覧
      3. インストール可能一覧
      4. インストール
      5. グローバル設定
      6. ローカル設定
  6. まとめ
  7. その他・メモ
  8. 参考文献

環境・条件

1
2
3
4
5
6
7
8
9
10
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.5
BuildVersion: 18F132

$ brew --version
Homebrew 2.1.9

$ nodenv --version
nodenv 1.3.0

詳細

公式リポジトリの通りに進めれば Ok。

下準備(飛ばして OK)

もともと nodebrew を使ってたが、nodenv とかぶるので nodebrew をアンインストール。

1
$ brew uninstall nodebrew

~/.bash_profile から nodebrew に関する記述を削除。(人によっては ~/.bashrc かも)

1
$ vi ~/.bash_profile

セットアップ

homebrew でインストール。

1
$ brew install nodenv

nodenv init を実行して表示される内容に従う。

1
2
3
4
$ nodenv init
# Load nodenv automatically by appending
# the following to ~/.bash_profile:
eval "$(nodenv init -)"

.bash_profileeval "$(nodenv init -)" を追加

1
$ vi ~/.bash_profile

インストールできているかをチェック。OK とか none とかであれば問題なし、セットアップ完了。

1
2
3
4
5
6
$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
Checking for `nodenv' in PATH: /usr/local/bin/nodenv
Checking for nodenv shims in PATH: OK
Checking `nodenv install' support: /usr/local/bin/nodenv-install (node-build 4.6.2)
Counting installed Node versions: 3 versions
Auditing installed plugins: OK

使い方(概要)

基本的な流れは以下の通り。

  • nodenv install x.y.z で必要なバージョンをインストール
  • インストール後は nodenv rehash を実行する
  • nodenv global x.y.z でグローバルに使いたいバージョンを指定
  • nodenv local x.y.z でプロジェクトで使うバージョンを指定

ヘルプ表示

何もオプションつけずに実行する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ nodenv
nodenv 1.3.0
Usage: nodenv <command> [<args>]

Some useful nodenv commands are:
commands List all available nodenv commands
local Set or show the local application-specific Node version
global Set or show the global Node version
shell Set or show the shell-specific Node version
install Install a Node version using node-build
uninstall Uninstall a specific Node version
rehash Rehash nodenv shims (run this after installing executables)
version Show the current Node version and its origin
versions List all Node versions available to nodenv
which Display the full path to an executable
whence List all Node versions that contain the given executable

See `nodenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/nodenv/nodenv#readme

すべてのコマンドがみたい場合は nodenv commands を実行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ nodenv commands
--version
commands
completions
exec
global
help
hooks
init
install
local
prefix
realpath.dylib
rehash
root
shell
shims
uninstall
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
whence
which

nodenv help <command> でコマンドの詳細を表示。

1
2
3
4
$ nodenv help root
Usage: nodenv root

Display the root directory where versions and shims are kept

インストール済み一覧

1
2
3
4
5
$ nodenv versions
system
8.16.0
10.16.1
* 12.7.0 (set by /Users/r17n/.nodenv/version)

インストール可能一覧

1
2
3
4
5
$ nodenv install -l
Available versions:
0.1.14
0.1.15
...

インストール

インストールしたら nodenv rehash もセットで実施。

1
2
3
4
5
$ nodenv install 11.15.0
Downloading node-v11.15.0-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v11.15.0/node-v11.15.0-darwin-x64.tar.gz

$ nodenv rehash

グローバル設定

すべてのディレクトリで有効な Node.js のバージョンを指定。

1
$ nodenv global 12.7.0

ローカル設定

現在のディレクトリ(を含む下層ディレクトリ)で有効な Node.js のバージョンを指定。グローバル設定よりも優先される。

1
$ nodenv local 12.7.0

まとめ

  • nodenv を使えば、ディレクトリごとに Node.js のバージョンを管理できる
  • nodenv install <version> で Node.js の指定バージョンをインストール
  • nodenv local <version> でそのディレクトリで使う Node.js のバージョンを固定

その他・メモ

はじめは nodebrew + avn でやろうとしてたんだけど、avn could not activate node v12.8.0 が解決できなくて諦めた。

あと nodebrew 使ってると、別のバージョンをインストールするときに pyenv global 2.x.x としないとエラーになるのもダルかった。

参考文献

関連記事