このトピックスで学べること
nodeのバージョンをコントロールするためのソフトウェア「n」をインストールする方法
「n」のインストール
- 「homebrew」から「n」をインストールするために、コンソールを開き以下のコマンドを実行する
brew install n
- インストール終了後、以下のコマンドを入れると現在利用可能な「nodejs」のバージョンが表示される
n --version
「n」のパスを通す
- github上の「readme」(https://github.com/tj/n#optional-environment-variables)にある通り、ホームディレクトリにある
.zshrc
を開いて追記する- 注)※隠しファイルが表示されていない場合は「command shift .(ドット)」で表示しておく
# nのインストール用
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
保存するためにコンソールを開き直すか、以下のコードを入力して ENTER キーを押す
source ~/.zshrc
「n」の使い方
インストールされているnodejsのリストを確認
n list
nodejsの最新バージョンを入れるコマンド
n latest
nodejsの指定のバージョンを入れるコマンド
n <<version>>
例えば15.1.0を入れるには
n 15.1.0
使うバージョンを切り替える
n
- 利用できるnodejsが一覧表示され、いま利用しているバージョンに「○」がついている
- ○を上下キーで切り替える
- ENTER でバージョンが切り替わる
node を実行するために node のバージョンをコントロールするためのソフトウェア「n」をインストールします。
はい、「 npm ?」とか「node?」とか「node のバージョン管理?」とか、たくさんいろんな難しい言葉が出てきましたけども、そのあたりを実行します。
npm というのはさっき、先にインストールした Homebrew というのが Mac の中で利用するためのアプリケーションのパッケージのマネジメントツールという風にいましたけども、 node 関係のパッケージマネジメントツールが npm というものになります。
昨今の node というのは、例えば CSS の元となる scss を一つにまとめてコンパイルしたり JavaScript を新しい技術で書いたものを古い記述に書き直してくれたり、様々な便利な機能があります。これらを利用することで、主にフロントエンドと呼ばれる方は、そういった技術を駆使して、アプリケーションやソフトウェア、アプリケーションやソフトウェアと同じですね、アプリケーションや Web サイトなどを作っていくわけなんですけども、その元となる node というものをインストールします。そして node には頻繁にバージョンがアップデートされるので、バージョンを手元で簡単に書き換えられるようにする仕組みがあります。そのソフトウェアもいくつかあって nodenv とか nodebrew とかいうのがあるんですけども、今回私は好きなので「n」という node のためのバージョン管理ツールを入れていきたいと思います。
ではまずコンソールを開けて、はい。えと「brew」ですね。「homebrew」の「brew」。「brew install n」とします。こうすると、今何が起こってるかと言うと「homebrew」経由ですね。「homebrew」は Mac の中でインストールする便利なものをまとめてくれる package Manager でした。その中から検索してくれて、「n」というものがあったら、それをこのパソコンの中にインストールするという手順が進んでいます。今、実際に 「n」というものがあったので、「n」の最新版をこのパソコンの中にインストールしているということになります。で、「homebrew」でインストールされるものは基本的にはこのコンソールの中で使えるものということになりまして、今回はこの「n」というコマンドが利用できるようになります。そしてこの「n」というコマンドを利用することで、様々なバージョンの node がインストールすることができ、それらを利用することができるということになります。少し時間かかりますので時間を飛ばしましょう。
はい。今、全てのインストール n のインストールが終わりました。「n –version」とかって入れると出てくるかな?そうですね「n」の6.7.0というものが入ったということになります。で、「n latest」これでですね「n」の最新バージョンが入りますよ、ということなんですけども、またここで一つポイントがあります。「Error: sudo required」という風に言われてまして、ではこのインストールを行うにあたって「sudo」でスーパーユーザー(superuser)にならないといけないよ、という風に言われています。ここでまたひと工夫を行います。
はい。ではその対応方法です。よく見てみると今、この部分 /user/local/n/version/node/15.2.0
を作ろうとしたら、パーミッション(権限)がなかったよと言われています。そしてエラーを直すには「sudo required」で「change ownership」、要は root ユーザーになって作業を行うか、もしくは「define N_PREFIX 」を使ってくださいねという内容になってます。「sudo」してですねインストールするというのはもちろん可能なんですけども、せっかくなので「sudo」は使わずに「define N_PREFIX 」を使ってみましょう。
具体的にどうするかといいますと、この github 上(https://github.com/tj/n)ですね。「n」はオープンソースで github 上で管理されているんですけども、その「readme」の中においてその内容の記述があります。「readme」の中ほどぐらいですかね、えーとここ(https://github.com/tj/n#optional-environment-variables)です。ここに「export N_PREFIX=$HOME/.n」のとこにしますよと、そして「export PATH=$N_PREFIX/bin:$PATH」てとこにしますよと書いてあります。
この内容はひとまず分からなくても結構です。インストールする場所をここにしますよっていうことなんですけども、この内容を一旦コピーしたら貼り付けることにします。どこに貼り付けるかと言うと、こちらですねホームディレクトリでcommand shift .(ドット)を押して、この隠しファイルを開きます。この中のもの「.zshrc」ですね。こちらの部分がその内容ということになります。ので、これをこのVisual Studio Codeで開きましょう。そうするとこのように何かが出てきますので、ここにそのままピッと貼り付けます。コメントをつけといた方がいいかもしれませんね。えー「nのインストール用」にしといたらいいと思います。こんな感じですね。これで保存します。これで「zsh(zシェル)」っていうものが Mac ではデフォルトでCatalinaの場合はコンソールを開いたときのその仕組みとして動くんですけども、その初期設定としてこの内容が読み込まれることになります。
では、やってみましょうもう。もう一度、本当はここで読み直すといいですね。ここにありますので…「.zshrc」ですね、ありますから source
をして貼り付ける、これでも結構ですし、もしくは一旦消していただいてもいいですね。わからない場合はとりあえず消していただいて、またiTerm2を開ければそのように出来上がります。
で、これで設定が取ったはずなのでもう一度「n latest」ってやってみましょう。はい、今度はインストールする場所がですね、今「mkdir :」のところがusersの9988meganeのところの.nに入りましたよ、ということになりましたので、インストールが無事にできたということになります。そしてここで「node -v」てすると15.2になりました。これで node の最新バージョンが入れられるということになりますね。で今度「n list」とすると今は一個だけ入ってますよーというふうになってます。そうですね「n 15.1.0」っていう風にすると今度は15.1.0が入ります。…まぁ、1と2ではそれほど変わらないですけども、そして「node -v」ってやると、また15.1変わってるのが分かりますね。今まで15.2だったのが15.1になりました。んで「n list」ってやると、えーとこの二つが入ってるということがわかります。さらに「n」でEnterして上下キーで好きな方に切り替えてEnterを押すと、その内容に切り替わります。結果、「node -v」ってやると、このように最新バージョンの15.2が入っているということになります。
プロジェクトにおいては少し古めの14とか13、12というものを使ってるケースもあるかもしれませんし、これから未来においては16、17、18と、おそらくたくさんのバージョンが増えていくことになると思いますので、その時にはまた柔軟に node のバージョンを切り替えながら作業が行えるということになります。というわけでhomebrew経由で「n」を入れて「n」から今度は node のバージョンを選択してインストールするということを行いました。この方法、覚えておいてください。