Nuxt3のnuxtコマンドはnuxiコマンドのエイリアス

Nuxt3には専用のコマンドラインツールの nuxi コマンドがありますが nuxt コマンドもあり違いが良く分からなかったので調べてみました。

お急ぎの人用3行まとめ

  • Nuxt3の nuxt コマンドは nuxi コマンドのエイリアス
  • 未インストール状態で npx から実行する場合は nuxi を使う
  • nuxt がインストールされている場合はどっちでもOK

nuxt? nuxi?

Nuxt3には専用のコマンドラインツールの nuxi コマンドがあります。
ところが nuxi init で生成したプロジェクトの package.jsonscripts に記述されているコマンドを見ると nuxt コマンドが記述されています。
触ってみた感じどっちでも良さそうな感じがするものの良くわからないのでコードを見て調べてみました。

nuxiコマンド

nuxi コマンドのパッケージは nuxt のリポジトリで管理されてます。
https://github.com/nuxt/nuxt/tree/main/packages/nuxi

package.jsonbin を見ると nuxi コマンドで bin/nuxi.mjs が呼び出されるのが分かります。
https://github.com/nuxt/nuxt/blob/main/packages/nuxi/package.json

nuxi.mjs の中身はビルド後の cli-wrapper.ts が呼び出されているだけで cli-wrapper.ts が処理の中身になってます。
https://github.com/nuxt/nuxt/blob/main/packages/nuxi/bin/nuxi.mjs
https://github.com/nuxt/nuxt/blob/main/packages/nuxi/src/cli-wrapper.ts

nuxtコマンド

nuxt コマンドのパッケージも nuxt のリポジトリで管理されてます。
https://github.com/nuxt/nuxt/tree/main/packages/nuxt

package.jsonbin を見るとなんと nuxt コマンドと nuxi コマンドの2つが定義されており両方とも bin/nuxt.mjs が呼び出されるのが分かります。
https://github.com/nuxt/nuxt/blob/main/packages/nuxt/package.json

nuxt.mjs の中身は nuxi/cliimport しているだけです。
https://github.com/nuxt/nuxt/blob/main/packages/nuxt/bin/nuxt.mjs

呼び出されている nuxi パッケージの package.jsonexports を見ると nuxi/clibin/nuxi.mjs が呼び出されるようになっており nuxi パッケージの nuxi コマンドと同じく cli-wrapper.ts が実行されます。
https://github.com/nuxt/nuxt/blob/main/packages/nuxi/package.json

まとめ

機能的にはどちらも同じですが未インストール環境で npx で実行する場合はダウンロードする依存の少ない nuxi を使ったほうが良さそうです。