Macでnodejs+nvm
最近はmobile開発でもnode.jsをなんらかの形で利用する必要があることが増えた。serverlessでフルスタックというのはAWSなどのクラウドを利用するものがほとんどである。LinuxやWindows Serverというフル機能を備えたServerをおかず、機能ごとに寄せ集めで構成するMicroservicesも少なくない。そういった時にしばしば使われるのがNode.jsである。
このNode.js、Mobile並に更新が早い。そこでバージョン管理が必要になる。そのためのソフトウェアがnvmである。今回はそれをmacOSに導入する。普段Android StudioやXcodeを中心に扱っているだけでOS周りの操作に慣れていない人には簡単ではないと思う。
以下の手順に従ってやればいい。
- nvmのインストール
% brew update # 必要に応じて % brew upgrade % brew install nvm
- nvmの設定
- zshrcに以下の3行を追加する。
export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
- 確認:新たなターミナルウインドウを開くと
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
の警告が出るかもしれない。一旦yで抜けnvm –helpを実行すると最初にNode Version Manager (v0.38.0)と表示されてヘルプが表示される。警告が出なければいいが出た場合の対応策は次のようになる。
- 警告対策
% compaudit There are insecure directories: /usr/local/share/zsh/site-functions /usr/local/share/zsh % ls -la /usr/local/share/zsh/site-functions drwxrwxr-x 6 userID admin 192 8 10 09:53 . drwxrwxr-x 3 userID admin 96 7 19 2020 .. % chmod g-w /usr/local/share/zsh/site-functions % compaudit There are insecure directories: /usr/local/share/zsh % chmod g-w /usr/local/share/zsh % compaudit % (何も返ってこない、つまり警告なし)
- zshrcに以下の3行を追加する。
- nvmでnodeの最新LTSを調べる(2021/8/10)
% nvm ls-remote | grep 'Latest' v4.9.1 (Latest LTS: Argon) v6.17.1 (Latest LTS: Boron) v8.17.0 (Latest LTS: Carbon) v10.24.1 (Latest LTS: Dubnium) v12.22.4 (Latest LTS: Erbium) v14.17.4 (Latest LTS: Fermium)
ちなみにLatestの文字が入っているのはLTS系のみなので他のバージョンはgrep ‘v15’などとやって検索する。
- nodeのインストール、利用
nvm install v14.17.4 nvm use v14.17 # 今すぐやるならこれは以下と同じことになる。 nvm install --lts nvm use --lts # LTS以外も含めた本当に最新版なら nvm install node nvm use node
その他の選択肢についてはHelpのExampleセクションに例があるので参照してほしい。
まとめ
今回はNode.js+nvmの環境をmacOSに構築した。Node.jsは言わずと知れたJavaScriptの動作プラットフォームである。
自分はmobileのNative開発だからJavaScriptはいらない、なんていうのはもう過去の話である。ServerlessでCloud Nativeのアプリ開発ともなればクライアントであるmobile側でもNode.jsを扱わなければならない事は増えこそすれ減る事はないなろう。