nodebrewからnvmへ移行する

nodebrewからnvmへ乗り換えてnodeのバージョン管理をする方法とnvmの基本的な使い方を紹介します。

nodebrewからnvmへ乗り換えてnodeのバージョン管理をする方法とnvmの基本的な使い方を紹介します。
 peaceiris
 2019-07-26

nodebrew から nvm へ乗り換える

nodebrew には stable, latest のタグはありますが LTS (Long-term support) のタグがありません。 そこで、LTS タグを指定できる node バージョン管理ツールをいくつか検討したところ、 最近の開発も活発そうな nvm が良かったので、今回 nodebrew から nvm へと移行しました。 この記事ではその移行方法・作業内容と nvm の基本的な使い方を解説します。

nodebrew のアンインストール

nodebrew を完全に削除するために以下の手順で作業を行います。

  1. グローバルインストールしたツールのバックアップ
  2. nodebrew 本体の削除
  3. nodebrew のパス設定の削除

グローバルインストールしたツールのバックアップ

nodebrew を削除する前に npm install -g でインストールしたコマンドラインツールの一覧を控えておきます。 グローバルインストールしたツールの一覧は npm list --depth=0 -g で取得できます。

$ npm list --depth=0 -g
/path/to/node/v10.16.0/lib
├── browser-sync@2.26.7
├── pyright@1.0.38
└── staticrypt@1.2.0

上記のような感じで一覧を取得できます。 nvm で管理する node 環境にこれらをインストールするため、ツールの名前とバージョンを控えておきます。 また、以下のワンライナーで npm install -g の引数として渡しやすいように加工すると良いでしょう。

$ npm list --depth=0 -g | grep "── " | sed -e 's/.*── //' | tr '\n' ' '
browser-sync@2.26.7 pyright@1.0.38 staticrypt@1.2.0

nodebrew の削除

nodebrew の本体と関連データはおそらくホームディレクトリの .nodebrew ディレクトリ以下に配置されています。 アンインストールは以下のようにしてディレクトリごと削除してしまえば完了です。

rm -rf ~/.nodebrew

いきなり削除するのが怖いのであればリネームするか、 もしくはどこか別の場所に移動させておくと良いです。

path 設定の削除

.bashrc.zshrc に記述した nodebrew のパス設定を削除します。 おそらく以下の記述があり、単に削除するだけです。

- export PATH="${HOME}/.nodebrew/current/bin:${PATH}"

削除したら exec ${SHELL} で bash や zsh を再起動して設定を適用します。

$ exec ${SHELL}

$ which nodebrew
nodebrew not found

$ echo ${PATH}
# nodebrew のパスが削除されていることを確認

which nodebrew で nodebrew の実行ファイルが存在しないこと、 echo ${PATH} で nodebrew のパスが存在しないことが確認できるでしょう。

以上で nodebrew のアンインストールは完了しましたので次は nvm をインストールします。

nvm のインストール

Node Version Manager - Simple bash script to manage multiple active node.js versions

nvm は Node Version Manager の略でその実体は bash 実装のシェルスクリプトです。 インストール方法は README で複数紹介されていますが、今回は Git install に従います。 この方法であればタグを指定することで nvm のバージョンアップに対応できて便利です。

私は以下のような手順で nvm の Git repository をホームディレクトリに配置し、 タグを指定しました。

git clone https://github.com/nvm-sh/nvm.git ~/.nvm
cd ~/.nvm
git fetch origin
git checkout -b v0.34.0 refs/tags/v0.34.0

次にパスを通します。 以下の内容を .bashrc.zshrc に追記します。

.bashrc OR .zshrc
shell
export NVM_DIR="${HOME}/.nvm"
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
[ -s "${NVM_DIR}/bash_completion" ] && \. "${NVM_DIR}/bash_completion"

追記した後は exec ${SHELL} を実行し、インタラクティブシェルを再起動して設定を読み込みます。 すると以下のように nvm が使えるようになったことが確認できるでしょう。

$ nvm [TABを入力]
alias		install-latest-npm	unalias
cache		list			uninstall
current		list-remote		unload
deactivate	ls			use
exec		ls-remote		version
help		reinstall-packages	version-remote
install		run			which

$ nvm --version
0.34.0

nvm で node をインストール

nvm で node の管理を始めましょう。

node のインストール

お目当ての LTS とついでに latest もインストールします。 --latest-npm オプションを付けることで npm update -g npm を node のインストール後に自動で実行してくれます。

# install LTS version
nvm install --lts --latest-npm

# install latest version
nvm install node --latest-npm

# インストール可能な node のバージョン一覧を確認
nvm ls-remote
# v11.15.0 をインストール
nvm install v11.15.0 --latest-npm

インストール済みバージョン一覧

nvm ls で現在有効になっている node のバージョンとインストール済みのバージョンを確認できます。

$ nvm ls
       v10.15.3
->     v10.16.0
       v11.15.0
        v12.2.0
         system
default -> lts/* (-> v10.16.0)
node -> stable (-> v12.2.0) (default)
stable -> 12.2 (-> v12.2.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/dubnium (-> v10.16.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0 (-> N/A)
lts/dubnium -> v10.16.0

node バージョンの切り替え

# LTS バージョンの node を使う
nvm use --lts

# 最新バージョンの node を使う
nvm use node

# system の node を使う
nvm use system

system の node とは、例えば macOS であれば brew install node でインストールした node のことです。

控えておいたツール達のインストール

一覧を控えておいたツール群を npm install -g tool-1@v1 tool-2@v2 ... でグローバルインストールします。

以上で nodebrew から nvm への移行は完了です。お疲れ様でした。

グローバルインストールしたツールの移行

最近 node LTS が v10.15.3 から v10.16.0 に変わり nvm を使い始めてから初めての移行作業を経験しました。 ここで言う移行対象は npm install -g でグローバルインストールしたツールのことです。

nvm は reinstall-packages という便利なコマンドを提供しており、 例えば nvm reinstall-packages v10.15.3 を実行すると、 バージョン v10.15.3 でグローバルインストールされているツールを現在のバージョンの node に自動でグローバルインストールしてくれます。

$ nvm ls
   v10.15.3
-> v10.16.0

$ nvm reinstall-packages v10.15.3
VERSION=''
Reinstalling global packages from v10.16.0...
...


 公開日時: 2019-05-01
 タグ: node  JavaScript 
peaceiris icon image
 peaceiris

情報系の大学生(学部4年)で、専攻は画像処理・機械学習(深層学習)です。最近は Hugo 周りで活動しており、このブログもテーマから自作して運用しています。

 Twitter  GitHub  Homepage
サイト内検索

Google カスタム検索を利用してサイト内の記事をキーワードで検索できます。

サイト内検索

Google カスタム検索を利用してサイト内の記事をキーワードで検索できます。