こんにちは。ざわかかける!のざわ(@zw_kakeru)です。
今回は手元のMacにNode.jsをインストールしてみようと思います。
コマンドラインからインストールします。
モジュールは、今後の管理の手間も考えてNodebrewを使います。
そこそこ丁寧めに書いていきます。
はじめに
インストールするだけならNode.jsの公式HPから最新版をダウンロードしてくれば良さそうです。
しかし、アップデートの手間や他のモジュールとの整合性担保などを考えると専用のパッケージマネージャー経由でインストールするべきでしょう。
というわけで今回はNode.jsを管理してくれるパッケージマネージャーであるNodebrewを使います。
nodebrewをインストールするためにhomebrewのインストールからやってみましょう。
Homebrew→Nodebrew→Node.jsの階層で管理します。
パッケージマネージャーとは何ぞ?という人もいるかと思いますがひとまず置いておいて、この手順でやれば手元でNode.jsが使えるようになります。
Homebrewのインストール
すでにbrewコマンドが入っている人はこの手順は飛ばしてください。
HomebrewはMacOS用の標準的なパッケージマネージャーで、Macで動くソフトウェアやツールを簡単にインストール、更新、管理することができます。
Macのターミナルからcurlコマンドを叩いてHomebrewをインストールします。
$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
これでbrewコマンドが使用できるようになります。
$ brew -v
Homebrew 4.2.9
Nodebrewのインストール
NodebrewはNode.jsのパッケージマネージャーで、複数のNode.jsバージョンを簡単にインストールし、切り替えることができたりします。
Pythonでいうpyenvです。
Homebrewからインストール
brewコマンドでnodebrewをインストールします。
$ brew install nodebrew
これでnodebrewコマンドが使用できるようになります。
$ nodebrew -v
nodebrew 1.2.0
パスの設定
Nodebrewがインストールできたらパスの指定を行います。
シェルからNodebrewが確実に見えるようにするための対応ですね。
これをやらないとシステム側がコマンドを見つけることができずにcommand not found
やNo such file or directory
のエラーが発生します。
現在実行しているシェルの設定ファイルにNodebrewのパスを書き込みます。
書き込んだらsourceコマンドで一度実行します。これでシステム側からnodebrewコマンドが見えるようになりました。
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
$ source ~/.zshrc
私の場合はzshを使っているので上記のように.zshrcを指定しましたが、一般的にはbashを使っている人が多いと思うのでその場合は.bashrcないし.bash_profileを指定することになるのかなと思います。
【少し脱線:.bashrcと.bash_profileについて】.bashrc
は対話的なセッションや新しいシェルが開かれるたびに読み込まれます。よって一般的な設定やエイリアス、関数の定義などをここに書くことが想定されています。
一方、.bash_profile
はログイン時にのみ読み込まれます。よってログイン時にのみ必要な設定や環境変数の定義をここに書くことが一般的です。
今回の場合は.bashrc
に書くことでNodebrewがすべてのbashセッションで利用可能になることが保証されます。
(新しいシェルを開いてもNodebrewが利用可能となります。)
ちなみに、自分が今どのシェルを使っているのかは$SHELL環境変数の中身を見ればわかります。
$echo $SHELL
/bin/zsh
$0でも確認可能です。
$echo $0
-zsh
ちなみにちなみに、今回は使いませんでしたがこの辺を勝手にやってくれるnodebrew setupなるコマンドがあったりするみたいです。
でもシェルの設定ファイルにパス追加の記述とかまではやってくれなかったりするっぽいので、興味ある人は調べてみましょう。
Node.jsのインストール
nodebrewが使えるようになったので、ようやくNode.jsをインストールできます。
まずはnodebrewの初期状態を確認します。
$nodebrew ls
not installed
current: none
どのバージョンのNode.jsもインストールされていないし設定もされていないようです。それはそうですね。
では最新の安定版のNode.jsを落としてみましょう。
$nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v20.11.1/node-v20.11.1-darwin-x64.tar.gz
################################################################################################################ 100.0%
Installed successfully
(latestを指定してもいいんですけど、まあstableでいいでしょう。)
v20.11.1を落としてきたみたいです。lsで確認すると、
$nodebrew ls
v20.11.1
current: none
確かに、さっきまで無かったv20.11.1が追加されていました。
しかし落としてきただけでcurrent環境に設定していないのでまだ使えません。
手元の環境に反映させてあげましょう。
$nodebrew use stable
use v20.11.1
$nodebrew ls
v20.11.1
current: v20.11.1
current環境にv20.11.1が設定され、無事にNode.jsが使えるようになりました!
これでnpmとかも使い放題です。
ちなみに、current環境をnoneに戻す方法が見つかりませんでした。そのバージョン自体をuninstallすればnoneになりそうではありますけど、まあdeactivateしたくなることも今後ないでしょう。
今後新たにバージョンを更新したり削除したりもこのnodebrew経由で自由自在にできるので、これでもう安心ですね。
(-hでしっかりコマンドの説明が出てきます。)
パッケージマネージャー、便利。
おわりに
今後Macを買い替えたりしたときに同じ手順でインストールが必要になると思うので、ここに手順をメモしておきました。
公式HPからの手動ダウンロードではその場の手間は少ないものの、後々の管理が大変なので今回のように初手でがんばって扱いやすくしておくのが大切だなと思いました。
Nodebrewについても理解が深まってよかったです。
パッケージマネージャーは色々なパッケージを使わないとその魅力が理解しにくい概念だと思っていて、自分のものにするにはやはり色々なモジュールを触ってみるのが一番いいかなと感じています。
途中で.bashrcや$SHELLの話が挟まったり、何やかんや色々勉強になったのも良かったですね。
今回は以上です。
おまけ
Nodebrewを勉強するために色々調べてたときに見つけたのですが、
Nodebrew作ったの、日本人だったの。。。