Next.js 13 の Turbopack をカスタムサーバーで試そうとした話

経緯

Next.js Conf 2022 でNext.js 13に関する発表、その中には Turbopack なる大変アツい代物がありました。

Next.js 13 Blog から

700倍だと??
これは試してみたいですね。

TL;DR

2022/10/27 現在、v13.0.0 ではカスタムサーバー(Custom Server)向けに Turbopack を使う方法はありません。
バージョンアップを待ちましょう。

試してみる

ブログでは優位性について記述があるものの、実際の手順はあまり詳しくは書いてない。。

Try out the Turbopack alpha today in Next.js 13 with next dev --turbo.

next dev --turbo で試せるらしい。

が、我々が知りたいのはカスタムサーバー(Custom Server)での実現方法である。つまり、

// setup Next.js
this.nextApp = next({ dev });
await this.nextApp.prepare();

みたいなコードに対して turbo: true みたいなのを渡したら動く、みたいなのを期待してる。

dev server with Turbopack 起動方法調査 (v13.0.0 on 10/27)

ブログにはこういう Note もあって↓

Note: Turbopack in Next.js currently only supports next dev. View the supported features.
We are also working to add support for next build through Turbopack.

なるほど?
この only supports next dev というのは、開発中しかサポートしてないよという意味なのか、next dev コマンドからの利用しかサポートしてないよという意味なのか…
(2行目の next build との対比だとすると後者のような気もする)

ソースを確認してみると

https://github.com/vercel/next.js/blob/v13.0.0/packages/next/cli/next-dev.ts#L104-L290

がっつり場合分けで結構な量の挙動の変更が行われている。そしてリポジトリ中にこの箇所以外に turbopack 関連で挙動を変えている部分はなさそう。(そこまで隅々まで調べてないけど)

https://github.com/vercel/next.js/blob/v13.0.0/packages/next/server/dev/next-dev-server.ts

DevServer にも turbopack 関連のオプション・実装はなさそう。

というわけで、結論: まだ無理

待ちましょう。