【WSL/node】asdfでnodeをインストールし、yarnも使えるようにする
こんにちは、しきゆらです。
今回は、以前紹介したasdfを使ってNode.jsをインストールし、個人的によく使っているYarnも使えるように環境を作っていきます。
なお、Node.jsのインストールはすぐ終わったのですがYarnのインストールとか諸々に至るまでに紆余曲折ありました。
まずは、インストールして環境構築までの流れをまとめます。
その後に、紆余曲折部分をメモしておきます。
必要なコマンドだけよこせ!という方は、以下の「環境構築の流れ」を参考にしてみてください。
環境構築の手順
コマンド自体の使い方等はそれぞれのツールのサイト等で確認してください。
なお、インストール先はタイトルにある通りWSL2上に動いているUbuntu20.04です。
# node用のプラグインを追加
asdf plugin add nodejs
# nodeをインストール
asdf install nodejs latest
# システム全体で使うバージョンを指定
asdf global nodejs latest
# yarnを使う準備
corepack enable
# asdfの再構築
asdf reshim nodejs
これにて、環境構築は終了です。
yarnの手順が以前とだいぶ変わりましたが、npmで個別にインストールせずにパッケージマネージャを管理する仕組みが入ったようです。
そのおかげで手順がさっぱりしました。
では、前述の通り環境構築の紆余曲折や各ドキュメントを見ながらの細かい話は以下にまとめていきます。
環境構築の紆余曲折
Nodeのインストール
こちらは、asdf
の仕組みにのっとって進めるだけなので、前回の記事と同じ手順を踏むだけです。
# node用のプラグインを追加
asdf plugin add nodejs
# nodeをインストール
asdf install nodejs latest
# システム全体で使うバージョンを指定
asdf global nodejs latest
# 確認
node -v
# => v18.7.0
Yarnのインストール
手間取ったのはこちらのほう。
インストールするために、公式サイトを見てみると記述がガラッと変わっていました。
Node.js 16.10以上だと以下のコマンドだけでよいとのこと。
corepack enable
corepackとは何ぞや。
と思って調べると、Node.jsのパッケージマネージャを管理するための仕組みのようです。
いい感じにまとめてくれている方がいました。先人に感謝です。
ということで、公式の手順に従ってコマンド実行してみました。
# corepackを有効化
corepack enable
# yarnは入った・・・?
yarn
zsh: command not found: yarn
ということで、実行してもyarn
は使えませんでした。
corepackについてもう少し調べてみる
なんでじゃ、と思ってこれまた調べてみると、プロジェクトごとに使うパッケージマネージャを指定するような使い方を想定しているようです。
そして、事前に使うパッケージマネージャを指定することもできるようです。
ということで、以下のコマンドで明示的にyarn
を使うようにしてみます。
# 明示的にyarnを使う
corepack prepare --activate yarn@3.2.2
# yarnは入った・・・?
yarn
zsh: command not found: yarn
同じくコマンドがない、と怒られたのでいろいろ考えてみました。
ここで思い出したのが、rbenv
ではrehash
というコマンドを使っていたこと。
gemや新しいバージョンのRubyをインストールしたときはとりあえずrehash
しておけ、
という程度の認識でしたが、このような仕組みがasdf
にもあるのでは、と思い調べてみました。
asdf reshim
調べてみると、ドンピシャな質問と回答が出てきました。
asdf reshim <name>
というコマンドでrbenv rehash
のようなことができるとのこと。
上記によると、インストール時に~/.asdf/shims
へコマンドとして使えるようにファイルが自動的に生成されるが、それ以外ではファイルが生成されないのこと。
今回の場合は、nodeインストール後に手動でcorepack enable
やcorepack prepare --activate yarn@3.2.2
を実行しているのでasdf
的には存在を知らない。
そこで、asdf
に追加があったことを教えてあげて、ファイルを作ってもらう必要があったようだ。
# asdfにファイル生成をしてもらう
asdf reshim nodejs
# 確認
yarn -v
# => 3.2.2
ようやく使えるようになりました。
ただ、未確認ではありますが、asdf reshim
の動きを見るとcorepack prepare
は不要な気がします。
ということで、「環境構築の流れ」では省いてます。
おまけ: rbenv rehashについて改めて確認してみる
ここで、改めてrbenv rehash
を調べてみました。
語弊を恐れずにざっくり書けば、新しいgemやRubyをインストールした場合は「~/.rbenv/versions/*/bin/
」にインストールされるが、PATHが通っているのは「~/.rbenv/shims
」なのでそのままでは使うことはできません。
そこで、バージョン切り替えやgemのコマンドなどを追加する場合は新たに「~/.rbenv/shims
」へコピーしてあげる必要があるわけです。
そのコマンドがrbenv rehash
のようです。
・・・とはいえ、いつの間にかrbenv install
などのタイミングで良しなにrbenv rehash
が実行されるようになり明示的に実行する必要はなくなったようです。
ということで、asdf
も正式版がリリースされる頃にはもしかしたら今回のようなごたごたはなくなるかもしれないなぁ・・・
ということを思いながら、諸々調べる機会を与えてくれて感謝しつつ紆余曲折のメモを終わります。
まとめ
今回は、asdf
を使ってNode.jsをインストールし、パッケージマネージャのYarn
を使えるように環境構築をしました。
いつの間にかYarn
のインストール方法が変わっていたり、asdf
の仕組みに躓いたりしましたが、いろいろなことを調べたり知ることができたので満足です。
というわけで、今回はここまで。
おしまい