4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mise で Node.js + npm 導入備忘録

4
Posted at

きっかけ: Voltaがメンテされなくなった

プロジェクトで Volta を使おうとしていたところ、メンテされなくなったという issue が立っていることを教えていただきました。

移行先として mise が推奨されているのでお試しとして Node.js + npm を導入してみることにしました。

前提

  • macOS Sequioa 15.7.2
  • fish 4.2.1
  • mise 2025.12.12

Volta, nvm などが導入されていた場合は削除しておきましょう。

mise のインストール

$ brew install mise

その後、シェルに応じて activate させます。fish の場合だけ方法が違うので注意。

# zsh の場合
$ eval "$(mise activate zsh)"

# bash の場合
$ eval "$(mise activate bash)"

# fish の場合
$ mise activate fish | source

activate 後は同一シェルセッションで mise が使えます。シェルを起動したときから使いたい場合は以下のように読み込まれるようにします。

# zsh の場合
$ echo 'eval "$(mise activate zsh)"' >> ~/.zshrc

# bash の場合
$ echo 'eval "$(mise activate bash)"' >> ~/.bashrc

# fish の場合
$ echo 'mise activate fish | source' >> ~/.config/fish/config.fish

Node.js + npm の導入

チーム開発していると Node.js だけでなく npm のバージョンも揃えておかなければなりません(そうですよね?)。

プロジェクトのルートディレクトリに .mise.toml ファイルを作り、導入したいツールとバージョンを指定します。

[tools]
npm = "11.6.2"
node = "22.18.0"

その後 install を行うと Node.js + npm が使えるようになります。

$ mise install

# バージョンの確認
$ node --version
v22.18.0

$ npm --version
11.6.2

$ mise ls
Tool  Version  Source                        Requested
node  22.18.0  ~/path/to/project/.mise.toml  22.18.0
npm   11.6.2   ~/path/to/project/.mise.toml  11.6.2

利用できるバージョンの確認

ls-remote を使うと、インストールできるバージョンすべてを表示できます。

$ mise ls-remote node

上記では直接 .mise.toml を編集しましたが、use を使っても toml ファイルに追加できます。

$ mise use npm@11.6.2
$ mise use node@22.18.0

なお、引数をつけずに use を使うと mise で使えるツールの検索ができます。

$ mise use

Huskyなどでの対応

グローバルに Node.js がインストールされていない場合や、Husky などでプロジェクトと同じ npm バージョンを使いたい場合、exec を使うことで解決できます。

例えば pre-commit にもともと次のように書かれていたとき、

npm run lint:check &&
npm run test

次のようにすることで npm を解決できます。

mise exec -- npm run lint:check &&
mise exec -- npm run test

グローバルでの利用

プロジェクトごとではなくグローバルで使いたい場合は use --global を使います。

$ mise use --global node@24

ls をするとプロジェクトとグローバルとで別のバージョンで使われることがわかります。

# プロジェクトディレクトリ
$ cd path/to/project

$ mise ls

Tool  Version  Source                        Requested
node  22.18.0  ~/path/to/project/.mise.toml  22.18.0
node  24.12.0
npm   11.6.2   ~/path/to/project/.mise.toml  11.6.2
# ホームディレクトリ
$ cd

$ mise ls
Tool  Version  Source                      Requested
node  22.18.0
node  24.12.0  ~/.config/mise/config.toml  24
npm   11.6.2

.mise.toml の記述順

次のように .mise.toml を記述し、npm のバージョンを表示してみてください。

[tools]
node = "22.18.0"
npm = "11.6.2"     # こちらを後にする
$ mise reshim

$ npm --version
10.9.3

$ which npm
/Users/[user]/.local/share/mise/installs/node/22.18.0/bin/npm

11.6.2 ではなく 10.9.3 が使用されました。
しかもパスを見ると Node.js に付属している npm が使われています。

実は .mise.toml の記述順には決まりがあり、優先したいものを先 に書く必要があります。今回の場合は node が上にあるので、Node.js 付属の npm が使われたということになります。

それでは本来の記述順に戻してみます。

[tools]
npm = "11.6.2"     # こちらを先にする
node = "22.18.0"
$ mise reshim

$ npm --version
11.6.2

$ which npm
/Users/[user]/.local/share/mise/installs/npm/11.6.2/bin/npm

期待する npm のバージョンが利用されていることがわかります。

mise で管理しておくと .mise.toml を編集することになり、導入バージョンをソース管理・レビューできるようになります。npm や yarn なども mise で管理した方が良さそうです。

もちろん、mise では Node.js に限らずさまざまなツールやランタイムを扱えるので結構重宝しそうですね。使っていきましょう!

参考文献

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?