Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
244
Help us understand the problem. What is going on with this article?
@oreo3@github

node.js のインストール・アップデート・バージョン切替えの手順(nodebrew、Mac)

ホームディレクトリにインストールするための手順。
環境は Mac OSX 10.15.7 Catalina。以下、ターミナル.app での操作。

すでにインストーラーで入れた node.js と npm が入っている場合、一旦アンインストールする

トラブルやゴミファイル残存を防ぐため、まっさらにしておく。

インストーラーでインストールした node.js のアンインストール

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \
| while read i; do
  sudo rm /usr/local/${i}
done
sudo rm -rf /usr/local/lib/node \
     /usr/local/lib/node_modules \
     /var/db/receipts/org.nodejs.*

npm(ホームディレクトリにある)のアンインストール
sudo rm -rf ~/.npm

nodebrew のインストールと設定

インストール。ホームディレクトリで以下コマンド
curl -L git.io/nodebrew | perl - setup
ホームディレクトリにインストールされる(.nodebrewディレクトリ)

インストールできたか確認(※helpにハイフン不要)
nodebrew help

ヘルプが表示されない場合はPATHを確認
echo $PATH

"ホームディレクトリ/.nodebrew/current/bin" へのPATHが通っていなければ PATH を通す。vi 等でホームディレクトリの .zshrc (無ければ作成。bash なら .bash_profile) に export PATH=$HOME/.nodebrew/current/bin:$PATH を追記。

vi操作:iで編集モード、escキーで戻り、:wqで上書き保存
export PATH=$HOME/.nodebrew/current/bin:$PATH
ターミナル再起動する(or source ~/.zshrc

今一度 PATH を確認。
echo $PATH
/Users/taku_n/.nodebrew/current/bin が追加されていればO.K.

特定バージョンを使いたいなら.zshrc に以下を追記
nodebrew use v0.11

nodebrew自身を最新版にアップデート
nodebrew selfupdate

node.js,npmのインストールとバージョン切替え

nodebrew でインストール済みの node.js のバージョンのリストを確認
nodebrew ls
現在使用中のバージョン(current:v0.0.0)を覚えとく

メモ:Use of uninitialized value $a1 in numeric comparison (<=>) at /Users/(ユーザ)/.nodebrew/current/bin/nodebrew line 675. とメッセージが出る場合は、rm /Users/(ユーザー)/.nodebrew/node/.DS_Store で解消

一応 nodebrew 自身を最新版にアップデート
nodebrew selfupdate

node.js のバージョン(安定版、最新版)を確認

node.js のインストール ※600MB以上あり結構時間かかるので注意
nodebrew install v14.16.0
(要バージョン指定。昔できた nodebrew install latest/stable はエラーとなる)

バージョンの切替え(= ~/.nodebrew/current のシンボリックリンクの切替え)
* nodebrew use v14.16.0 バージョンを指定
(nodebrew use latest/stable で最新版/安定版に切り替えることはできなくなった)

バージョンが無事切り替わっているか確認
node -v

npm

npm も同時にインストールされる。一応バージョンを確認しとく
npm -v

最新バージョンをチェックし、必要ならアップデート
npm update -g npm

node.js のバージョン切替えをした場合のパッケージの移行

バージョンごとに切り分けての管理となるので、上記の nodebrew use でnode.jsのバージョンを切り替えると、切替え前にnpmでインストールしたパッケージモジュール群が使えなくなる。

移行後のバージョンにいる状態で、移行前のバージョンで入れていたパッケージを新たにインストールする (元バージョンのパッケージの場所:/Users/ユーザー名/.nodebrew/node/古いバージョン/lib/node_modules)

~/.nodebrew/node/vx.x.x[旧バージョン]/lib/node_modules
で旧バージョンのパッケージ名をコピペしエディタ等で半角スペース区切りに整形

新バージョンに切り替えた状態でnpmでグローバルにインストール
例) npm install -g csslint gulp gulp-cli jshint npm-check-updates phplint sass-lint

メモ:node.js を移行後のバージョンに切り替えた状態で nodebrew migrate-package vx.xx.xx(移行前のバージョン) とすると、移行前バージョンでインストールしていたパッケージ群を現在のバージョンから使えるようにしてくれる。しかし、これは、~/.nodebrew/node/vx.x.x(現バージョン)/lib/node_modules/ にハードリンク(エイリアス)を作成するというものであり、実ファイルをコピーしてくれるわけではないので、移行前のバージョンを削除すると使えなくなる。パスを通す必要がある(~/.nodebrew/node/vx.x.x/bin 中に反映)もあり、node_modules 中の各パッケージのディレクトリを新バージョンのそれにコピーするだけでは動作しない。パッケージごとにパスを通す作業を考えると、新規にインストールした方が楽という判断で完全に切り分けることにした。

使わなくなった node.js の特定バージョンをアンインストール

アップデートした場合、何か問題が起きた時に戻せるように元のバージョンはしばらく残しといた方が良いと思う。

動作が問題ないことを確認した上で、不要となったものを削除
nodebrew uninstall v0.11.13
nodebrew clean v0.11.13

削除後残ってるゴミファイルがないかどうかの確認は
~/.nodebrew/src/~/.nodebrew/node を確認(nodebrew ls の出力と比較)

メモ

一時的に特定のバージョンを使う

あるスクリプトを「一時的に」特定のバージョンで実行したい場合
(例:app.js を v6.11 で実行)
nodebrew exec v6.11.0 -- node app.js

nodebrew のアンインストール・入れ直し

nodebrew コマンド としても反応が無くなり(エラーは出ない)ハマった時があった。
一旦アンインストールして入れ直そうと .nodebrew ディレクトリを削除し、上記インストールのワンライナーを実行してもインストールできなかった。
git.io/nodebrewをホームディレクトリにダウンロード、perl nodebrew setup で入れ直すことができた。完了後、ダウンロードした git.io/nodebrew は削除。

参考サイト

244
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
oreo3@github
日々勉強しつつ、できる範囲でWeb制作等をしています。 デザイン、SEO、マーケティング、WordPress

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
244
Help us understand the problem. What is going on with this article?