デプロイ後と同じ環境で開発: now dev

例えば NextJS の開発をnextコマンド(開発サーバーが建つ)で開発してもできますが、now devを使うとデプロイ先と同じソースやデプロイ時に行う動作と同じ流れでビルドしたファイルを使って開発できます。(このコマンドは2020-01時点でまだベータ版な為今後変わる可能性があります)

now devnow.jsonの設定を使うため、このファイルは作っておかなければなりません。とりあえずローカル実行だけなら中身は空の JSON で大丈夫です。

{}

nowではapi/ディレクトリへ.jsファイルを置くと勝手に@now/nodeを使ってサーバーレス関数化されるので、ここではそのファイルを適当api/foo.jsとでも作ります。その中身は以下の通りです。

export default (_, res) => {
  res.send('foo');
}

これでnow devするとapi/fooとアクセスした時にfooと表示されるはずです!

ポート変更

ちなみにnow devはデフォルトで3000で立ち上がりますが--listenフラグを使うことでこれを変えれます。

now dev --listen 3333

環境変数

もしnow.jsonで、now のシークレット変数をenvまたはbuild.envで設定している場合、ローカルにそれぞれ.envenv.buildを作る必要があります。例えばnow.jsonが、

{
  "env": {
    "FOO": "@foo"
  },
  "build": {
    "env": {
      "BAR": "@bar"
    }
  }
}

の場合、.envではFOO=...を、.env.buildではBAR=...を置かなければなりません。

上記の説明の例をココに置いてます。うまくいかない場合に参考にしてください。