備忘録）nodebrewからVoltaに移行する【MAC】

# はじめに
今までnodebrewを使いNode.jsのバージョンを管理してきましたが、バージョンを切り替える際パッケージマネージャーとの依存性でエラーを度々起こし煩わしく感じたので、最近よく聞くVoltaに移行してみようと思いメモ

【実行環境】
macOS Big sur 11.6

# 概要
今まで使ってたnodebrew、yarn、npmを削除し、
新たにvoltaをインストールし、node.jsを使う

# 削除する
今まで使っていたnodebrew、yarn、npmを下記で削除していく
```:ターミナル
//homebrewでインストールしていたものを削除
brew uninstall nodebrew yarn

//削除できたか下記で確認
brew ls
```
これで準備OK！と思いつつwhichコマンドでもパス確認したらuserディレクトリのローカル環境に初めた頃の名残かまだいたのでこちらも削除しました。。。
```:ターミナル
//パス確認したらまだいました・・・
which nodebrew
→/Users/user/.nodebrew/current/bin/nodebrew
which npm
→/Users/user/.nodebrew/current/bin/npm

//下記で削除対応
rm -rf ~/.nodebrew
rm -rf ~/.npm
```
再度パス確認したら「nodebrew(npm) not found」と返ってきたのでこれで削除の方は完了！
※「node-gyp」「.yarnrc」などnode関連がuserディレクトリにあったので合わせて一度削除してます

あとはキャッシュ関連の下記も削除しました
※先にcacheコマンドでそれぞれ削除しておくと○

```:ターミナル
rm -rf /users/user/Library/Caches/Yarn/
rm -rf /users/user/Library/Caches/node/
rm -rf /users/user/Library/Caches/node-gyp/
```

# Voltaをインストールする
削除が完了したので、Voltaをインストールしていきます。
Voltaを選んだ理由としてこちらの記事を参考にさせていただき現状で自分の環境では利点が多かったので採用しました。インストール方法も参考にさせていただきました

https://zenn.dev/taichifukumoto/articles/how-to-use-volta

https://qiita.com/heppokofrontend/items/5c4cc738c5239f4afe02

また、記事を参照した結果今回はhomebrewを使わずvoltaを下記でインストールしていきます
```:ターミナル
//インストール
curl https://get.volta.sh | bash
//ターミナル再起動後に確認してみる
volta -v
→1.0.6
which node
→/Users/user/.volta/bin/node
which yarn
→/Users/user/.volta/bin/yarn
which npm
→/Users/user/.volta/bin/npm
```
インストールバージョンが表示され無事にvoltaのインストールが完了しました
また、voltaからnode、npm、yarnのパスが通っていることも確認できました

## voltaでnodeをインストール
下記のコマンドでvoltaからnodeをインストール
```:ターミナル
//LTS版インストール時
volta install node

//指定バージョンのインストール時(15系の場合)
volta install node@15

//指定のバージョンが無事インストールされたか確認
node -v
```
バージョンが表示されたらnodeのインストール完了です

:::note
Node.jsにデフォルトでnpmもインストールされるのでそのままnpmも使える
:::

**別途任意バージョンのnpm及びyarnを使う場合は下記でインストール**
```:ターミナル
//インストール
volta install yarn
volta install npm
```

voltaでインストール済みのnode.jsやパッケージマネージャーを確認
```:ターミナル
volta list all
```
すると下記のような一覧になってインストールしたnode、yarn、npmが確認ができます。
以上でvoltaからのnodeインストールは完了です
```:ターミナル

⚡️ User toolchain:

    Node runtimes:
        v16.14.2 (default)

    Package managers:
        npm:
            v8.6.0 (default)
        Yarn:
            v1.22.18 (default)

    Packages:
```

## volta pinコマンドでバージョンを固定し共有
今回voltaを使いたいと思った理由の一つです。
プロジェクト毎にvolta pinを使いpackage.jsonファイルを更新し、
バージョンを固定します

プロジェクトのディレクトリ内で下記を入力
※ここではprojectとします
```:project
volta pin node@12
volta pin yarn
```
するとpackage.jsonに下記が追加されます
```json:package.json
  "volta": {
    "node": "10.24.1",
    "yarn": "1.22.18"
  }
```
これでvoltaがインストールされている他のPC環境で
```:project
yarn install
```
すれば指定されたバージョンをインストールしてくれる

# 補足
:::note warn
指定のNode.jsバージョン及びパッケージマネージャーのアンインストールは「volta uninstall node」コマンドでは上手くいかなかったが、下記で各種アンインストールできました
:::
```:ターミナル
rm -rf /Users/user/.volta/tools/image/node/{削除するバージョン}
「/Users/user/.volta/tools/image/」の階層にそれぞれあるらしい
```
# 参考
その他、Volta設定で色々参考にさせていただいた記事

https://blog1.mammb.com/entry/2021/11/01/090000

https://zenn.dev/seya/articles/38b330795c84c8

https://www.youtube.com/watch?v=6WkjdxaBKgY&ab_channel=%E3%81%9F%E3%81%AB%E3%81%90%E3%81%A1%E3%81%BE%E3%81%93%E3%81%A8%E3%81%AE%E3%81%A8%E3%82%82%E3%81%99%E3%81%9F%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

https://blog.70-10.net/2021/09/29/volta-uninstall-node/