STDIO

システム開発やフクロウ、節約などの情報をI/Oするためのブログ

Node.jsとnpmのアップデート手順(Mac・nodebrew)

Mac用のNode.jsバージョン管理ツール「nodebrew」による、Node.jsとnpmのアップデート手順をまとめました。

環境

  • モデル: MacBook Pro 15インチ(Mid 2015)
  • OS: macOS Sierra 10.12.2
  • nodebrew: 0.9.6
  • Node.js: v6.9.1 → v6.9.4
  • npm: 4.0.3 → 4.1.1

インストール手順は、下記記事にまとめています。

※本記事では「nodebrew」コマンドを、エイリアス「nb」と記載します。

現在有効なNode.jsとnpmのバージョンは下記コマンドで確認できます。

$ node -v
v6.9.1
$ npm -v
4.0.3

nodebrewのアップデート

$ nb selfupdate
Fetching nodebrew...
Updated successfully

※最新版が導入済みでも、上記のメッセージが表示されます。

インストール可能なNode.jsバージョンの確認

$ nb ls-remote
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6
〜
v6.0.0    v6.1.0    v6.2.0    v6.2.1    v6.2.2    v6.3.0    v6.3.1    v6.4.0
v6.5.0    v6.6.0    v6.7.0    v6.8.0    v6.8.1    v6.9.0    v6.9.1    v6.9.2
v6.9.3    v6.9.4    

v7.0.0    v7.1.0    v7.2.0    v7.2.1    v7.3.0    v7.4.0
〜

バージョンの選び方

現時点の最新版は「v7.4.0」で、新しい機能を使いたい場合はこちらを導入します。

業務利用など安定性を重視する場合はLTS(Long-term Support: 長期サポート)版がおすすめです。 現在のLTS版はバージョン6で、2019年4月18日までのメンテナンスが予定されています。

Node.jsのサポート期間については、下記リンク先で確認できます。

新しいバージョンが必ずしも長く使えるわけではないことをご留意ください。

今回はバージョン6系で最新の「v6.9.4」にアップデートします。

変更内容の確認

業務で使用するNode.jsをアップデートする場合は、変更内容を事前に確認して影響がないことを確認する必要があります。

Node.jsの変更履歴は、下記リンク先で確認できます。

Node.jsのインストール・有効化

インストール

$ nb install-binary v6.9.4
Fetching: https://nodejs.org/dist/v6.9.4/node-v6.9.4-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

※「-binary」を付けないとソースからコンパイルするので時間がかかります。

有効化

$ nb use v6.9.4
use v6.9.4

確認

$ node -v
v6.9.4

npmの更新

Node.jsに付属するnpmを最新版に更新します。

更新

$ npm update -g npm

確認

$ npm -v
4.1.1

パッケージの移行

nodebrewでは、「npm install -g」でグローバルインストールしたパッケージは、Node.jsのバージョン別に管理されます。

例えば、v6.9.1でインストールしたパッケージは「~/.nodebrew/node/v6.9.1/lib/node_modules」に存在するため、新しく導入したv6.9.4では使用できません。

「npm install -g」で必要なパッケージを個別に再インストールしてもいいのですが、移行用の便利なコマンドもあります。

書式

$ nb migrate-package 移行元バージョン

v6.9.1でインストール済みのパッケージをインストールします。

$ nb migrate-package v6.9.1
Try to install express-generator ...
/Users/stdio/.nodebrew/node/v6.9.4/bin/express -> /Users/stdio/.nodebrew/node/v6.9.4/lib/node_modules/express-generator/bin/express
/Users/stdio/.nodebrew/node/v6.9.4/lib
└─┬ express-generator@4.14.0 
  ├─┬ commander@2.9.0 
  │ └── graceful-readlink@1.0.1 
  ├─┬ mkdirp@0.5.1 
  │ └── minimist@0.0.8 
  └── sorted-object@2.0.0 

npm is already installed

Installed successfully:
express-generator

v6.9.1でインストールしていた「express-generator」が導入されました。

また、「npm is already installed」とあるように、インストール済みのパッケージは導入されないようです。

グローバルパッケージの一覧は下記コマンドで確認できます。

$ npm ls -g --depth=0
/Users/stdio/.nodebrew/node/v6.9.4/lib
├── express-generator@4.14.0
└── npm@4.1.1

Node.jsのアンインストール

以前インストールしたNode.jsが不要な場合は、下記コマンドでアンインストールします。

$ nb uninstall v6.9.1
v6.9.1 uninstalled

確認

$ nb ls
v6.9.4

current: v6.9.4

関連ファイルの削除

Node.jsをアンインストールしただけでは、関連ファイルは残ったままになっています。

$ ls ~/.nodebrew/src
v6.9.1 v6.9.4

下記コマンドで削除できます。

$ nb clean v6.9.1
Cleaned v6.9.1

確認

$ ls ~/.nodebrew/src
v6.9.4

パッケージの移行(migrate-package)でトラブル?

「migrate-package」でパッケージを移行し、expressコマンドが問題なく使用できることは確認しました。

ところが、パッケージの更新確認(outdated)やアップデートでエラーが発生しました。(旧バージョンv6.9.1のパスにインストールできないと表示される)

対象パッケージの再インストールでエラーは解消しましたので、気になる方は「migrate-package」を使わずに「npm install -g」でのインストールをおすすめします。

# エラー
$ npm outdated -g
npm ERR! addLocal Could not install /Users/stdio/.nodebrew/node/v6.9.1/lib/node_modules/express-generator
Package  Current  Wanted  Latest  Location
npm        4.1.1   4.1.1   4.0.5

$ npm update -g
npm ERR! addLocal Could not install /Users/stdio/.nodebrew/node/v6.9.1/lib/node_modules/express-generator

# 再インストール
$ npm install -g express-generator
/Users/stdio/.nodebrew/node/v6.9.4/bin/express -> /Users/stdio/.nodebrew/node/v6.9.4/lib/node_modules/express-generator/bin/express
/Users/stdio/.nodebrew/node/v6.9.4/lib
└── express-generator@4.14.0 

# エラー解消
$ npm outdated -g
Package  Current  Wanted  Latest  Location
npm        4.1.1   4.1.1   4.0.5

$ npm update -g
$

まとめ

以上の手順で、Node.jsとnpmのアップデートは完了です。

頻繁に更新されるNode.jsですが、nodebrewがあれば簡単に移行できます。