y-ohgi's blog

TODO: ここになにかかく

Rust 製のnode マネージャー "volta"

TL;DR

  • JavaScript (node)のランタイムマネージャーvolta
  • ローカルのnode のバージョン管理をする

概要

いままでDocker で全てのランタイムをどうにかしてきたものの、ついにMBP に特定のランタイム(node)を入れないと仕事に支障がある状況に。
仕事なので諦めてnode をローカルに入れるものの、バージョン管理をしたいのでvolta を使う。
volta はRust 製とのこと。イマドキ猫も杓子もRust なのである。

volta-cli/volta: Volta: JS Toolchains as Code. ⚡

速かったりするらしい。特にバージョン管理ツールにバージョン管理以外求めていないので使えれば良い。

やる

volta のインストール

curl https://get.volta.sh | bash

node のインストール

よくあるランタイムマネージャーと同様にインストール。

$ volta install node@18

インストールできたかの確認

$ volta list
⚡️ Currently active tools:

    Node: v18.2.0 (current @ </PATH>)
    Tool binaries available: NONE

See options for more detailed reports by running `volta list --help`.

volta は明示的にenable などをする必要なく、すぐ使用可能。

$ node --version
v18.2.0
$ npm -v
8.9.0
$ npx -v
8.9.0

バージョンの固定

pin コマンドを使うとプロジェクト毎のバージョンを固定できる。

$ volta pin node@18

現在のバージョンは package.json に追加される。

$ git diff
diff --git a/package.json b/package.json
index 3f4f537..c2bd339 100644
--- a/package.json
+++ b/package.json
@@
   "devDependencies": {
     "@commitlint/cli": "^16.2.3",
     "@commitlint/config-conventional": "^16.2.1"
+  },
+  "volta": {
+    "node": "18.2.0"
   }
 }

所感

node が数年ぶりにローカルに入っていて凄い違和感。メインで使用しているものの、たぶん6,7年ぶり。
ローカルにnode があると速い。というかDocker for Mac の遅さを実感。
Dockerize する理由はローカル汚したくないことと、Docker により本番との環境一致性を求めていたけど、DX(開発体験)はローカルにインストールしたほうが良いと感じてしまう。いい加減Docker に固めることに固執するのをやめようかと思うなど。volta の感想じゃないけど。