1
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?

1万4千円の化石なら、`npm run dev -- --turbo`を使え。……と言いたかったけど、今は違うのか(泣)

1
Posted at

前置き

この記事を書きながら気づきましたが、素晴らしいアップデートが入り、最新版のNext.js 16以降ではTurbopackがデフォルトで使われます。つまり、普通に npm run dev するだけでOKなので、この記事、ほぼ意味ないっすね~笑
なお、この記事はWebpackが標準だったNext.js 15.5.14での話です。

💻 結論

結論、Next.js 15以前を使っていて、スペックの低いパソコンなら、次のコマンドを試してみてください。

npm run dev -- --turbo

Next.jsの開発コマンドは、一般的に次のコマンドだと思います。

npm run dev

しかし、1万4千円の私の中古ノートPCでは重すぎて、使い物になりませんでした。

そこで使ってみたのが、--turbo というオプションです。
これをつけるだけで、開発環境が驚くほど改善されます。

なぜ、通常の npm run dev は重いのか?

Next.js 15.5.14を使っていた私の環境では、開発時に使われるコンパイラの違いが大きく影響していました。

「コンパイラ」と呼びますが、WebpackやTurbopackは、厳密には複数のファイルをまとめる「バンドラー」と呼ぶみたいです。

従来から使われてきたWebpackはJavaScriptで作られています。プロジェクトの構成や規模によっては、開発サーバーの起動やコード変更後の反映に時間がかかることがあります。

特にページや依存関係が多いプロジェクトでは、スペックの低いPCで動作が重く感じられることがあります。

なぜ、npm run dev -- --turbo は速いのか?

TurbopackはRustで作られており、開発時の処理速度を重視して設計されたコンパイラです。

さらに、必要なコードを必要になったタイミングで処理する、オンデマンドな仕組みが採用されています。

そのため、私の環境では無駄な待ち時間が減り、低スペックなPCでもかなり快適に動かせるようになりました。

🛠️ Next.jsの4大コマンド

Next.jsには、基本的に次の4つのコマンドがあります。

npm run dev

開発中に、手元で画面を確認するためのコマンドです。
今回は、このコマンドについてのお話です。

npm run build

本番公開用にコードをしっかり最適化するコマンドです。
4つの中では、もっとも負荷の高いコマンドです。

npm run start

npm run build で生成されたファイルを使って、本番サーバーを立ち上げるコマンドです。

npm run lint

package.json にlint用のスクリプトが設定されている場合に、コードの問題を自動でチェックするコマンドです。

なお、Next.js 16では next lint が廃止されているため、ESLintやBiomeなどを直接実行する設定が必要です。

📊 4つの開発コマンドを徹底比較

開発時によく見る次の4つのコマンドについて、何が違い、どれを選ぶべきなのかを比較します。

コマンド コンパイラ 特徴と低スペックPCでの体感
next dev 15以前:Webpack
16以降:Turbopack
Next.jsを直接起動する。16以降は何もつけなくてもTurbopackになる
npm run dev package.jsonの設定による npm経由でdevスクリプトを実行する。中身がnext devなら、15以前はWebpack、16以降はTurbopackになる
next dev --turbo Turbopack(Rust製) Next.jsを直接Turbopackで起動する。16以降ではTurbopackが標準なので、指定する必要はない
npm run dev -- --turbo Turbopack(Rust製) npm経由でTurbopackを明示的に有効にする。15.5.14の私のPCではもっとも快適だったが、16以降では基本的に不要

大きく分けると、次の2つの違いを組み合わせたものです。

  • npm run devnext dev か」という実行ルートの違い
  • 「Webpackか、--turbo をつけたTurbopackか」というコンパイラの違い

❓ ①「npm」と「next dev」の違いってなに?

まずは、npm run devnext dev の違いについてです。

next dev は「直接命令」

パソコンに対して、「Next.jsを直接起動して!」と呼び出す方法です。

ただし、パソコンの環境やパスなどの設定によっては、次のようなエラーになってしまうことがあります。

そんなコマンドは知らない

npm run dev は「ショートカット経由」

プロジェクトにある package.json というファイルを見ると、あらかじめ次のような設定が書かれています。

{
  "scripts": {
    "dev": "next dev"
  }
}

このように設定されている場合、npm run dev と入力すると、npmが次のように仲介してくれます。

代わりに、プロジェクト内の next dev を実行するね

そのため、グローバル環境に next コマンドがなくても、プロジェクトにインストールされたNext.jsを実行できるのがメリットです。

なぜ -- が2回あるのか?

Next.js 15以前で、安全なnpmルートを使いつつターボモードにしたいときに入力するのが、次のコマンドです。

npm run dev -- --turbo

なぜハイフンが2回続くのかというと、真ん中の -- がオプションを渡すための区切りになるからです。

イメージとしては、npmに次のようにお願いしています。

npmさん、dev を動かして。あ、その先で動くNext.jsに、--turbo というオプションをそのまま引き渡しておいて!

⚙️ 毎回入力するのが面倒なときの対策

Next.js 15以前で毎回 -- --turbo と入力するのが大変なら、package.json の中身を直接書き換えてしまうのがおすすめです。

{
  "scripts": {
    "dev": "next dev --turbo"
  }
}

こうしておけば、次からは長いコマンドを入力する必要はありません。

いつもの短いコマンドを実行するだけで、自動的にターボモードが起動します。

npm run dev

自分が使っているNext.jsのバージョンは、プロジェクトのフォルダで次のコマンドを実行すると確認できます。

npx next --version

✍️ まとめ

Next.js 15.5.14を使っていた私の環境では、Turbopackに切り替えることで、1万4千円の中古PCでもNext.jsの開発がかなり快適になりました。

Next.js 15以前なら --turbo を試し、Next.js 16以降なら、まず通常の npm run dev がTurbopackで動いていることを確認してみてください!

1
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
1
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?