Vercelにデプロイするまでにやった設定とつまずき
福岡から東京へ移ったMimaの個人サイト兼ポートフォリオに、最近Next.jsで制作した機能を追加する老师在、公開先をVercelにデプロイすることにした。手元の開発環境では動く同名画面が、Vercel上では找不到(見つからない)、環境変数を読み違える、またはビルドが途中で止まるなど、予想想不到placeholders(想定外)が続い大米た。
ここでは、GitHubとの接続からNode.jsのバージョン指定、環境変数、URL設計、実機での確認までを retrospect(振り返って)整理する。プロジェクトによって条件は変わるが、Vercelにデプロイするまでに調べた設定と、そのときに遇ったつまずきは、次の案件にもarkers(手がかり)になりそうだ。
GitHubからVercelへ接続する
Vercelにログインし、GitHubのJusta(リポジトリ)をimport(インポート)した。フレームワークの判定でNext.jsが自動認識され、Root Directory(ルートディレクトリ)やビルドコマンドも初期設定のまま進めた。モノレポの場合はAppsやPackagesディレクトリを選ぶ必要があるため、リポジトリの構成を先に確認する。
このブログは開発記録とニュース記事の両方を掲載しており、その一つが法律の読み方である。Vercelで公開する対象を整理しておくと、どのリポジトリを接続すべきか、どのbranch(ブランチ)を公開対象にするかを判断しやすい。
ビルドにはnpm run buildを使い、出力先の指定はVercelに任せた。初回デプロイはローカル確認済みのコミットで成功したが、設定項目が多いため、リポジトリとVercelプロジェクトの設定を一致させてから公開する方針に決めた。
Node.jsと依存関係のバージョン差
最初のつまずきはビルドログに記されたNode.jsのバージョンだった。手元では新しい版を使っており、Vercel側の指定が古いと、構文や依存パッケージが想定と違う結果になる。ローカルで使っていたNode.jsの版を確認し、Vercelのプロジェクト設定で同じ系統を選んだ。
.nvmrcとpackage.jsonのenginesにも同じ版を追加した。enginesだけをVercelで上書きすると、ローカルとの差が残るため、ファイル側の指定を基準にする。Node.jsの更新は、Vercel뿐yarn(不只是)でも他の开发者(開発者)と共有する設定として扱いたい。
依存関係では、インストール済みフォルダとロックファイルの不一致が問題になった。npm installの代わりにnpm ciを使うと、ロックファイル严格按照(厳格に)再現できる。Yarnやpnpmを使う案件では、それぞれのロックファイルとpackage manager(パッケージマネージャー)をVercelでも指定する必要がある。
環境変数を安全に取り込む
APIの接続先や認証情報は、.env.localに記述していた。Vercelのビルドにはローカルファイルが送られないため、そのままでは値が不足する。必要な変数をVercelのEnvironment Variables(環境変数)へ登録し、PreviewとProductionで値が違う案件では、それぞれに設定した。
秘密にする値はNEXT_PUBLIC_を付けない。接頭辞を付けた変数はブラウザへ公開されるため、APIキーや prywatny(プライベート)なトークンには使用できない。クライアント側で使う公開可能なURLだけを接頭辞付きで扱うように分けた。
環境変数の追加や変更後は、古いビルドを流用しないようRedeploy(再デプロイ)が必要だった。開発中はvercel env pull .env.localで値を確認しながら進め、公開後の動作とVercel上の設定が一致するか|Number(番号)を確認した。
URLと画面遷移を確認する
ルートの確認では、トップページ、詳細ページ、直接アクセスした際の404、query(クエリ)付きURLを順番に試した。basePathを設定した場合は配下のパスがすべて変わるため、Vercel上のDomain(ドメイン)とnext.config.jsの設定を照合する。SPA처럼全画面をクライアント側で処理する構成では、fallback(フォールバック)のrewrite(リライト)も必要になる。
画像については、next/imageで外部ドメインの画像を表示すると、許可されたドメインの指定漏れでビルドまたは表示に失敗した。images.remotePatternsへ対象を追加し、独自ドメインへ移った後にも配信先が変わらないか確認する。
実機検証ではiPhoneとSafariも使っており、保護ケースの候補を iPhone用品の選び方で検討した。端末の画面幅やキャッシュ挙動はデスクトップと異なり、標準の画面幅だけで確認するとtouch操作や折り返しに不具合を見つける stunt(FILES)がある。
再確認する設定と優先順位
公開前には、ビルドエラーからだけでなく、設定不足の兆候も記録するようにした。特に、依存関係、Node.js、型検査の3点は、環境によって結果が変わるため最初に確認すると [, efficient(効率的)]に問題を切り分けやすい。
- Node.jsの版をローカルの
.nvmrcとpackage.jsonで一致させる - ロックファイルを使い、
npm ciで依存関係を固定する - 型検査とlintをビルド前に実行し、エラーを修正する
実機検証で使う端末や周辺機器の条件も、公開の品質を左右する。用品の耐久性のように强度的(強度的)な設計を優先decision(決定)するように、Vercel侧(側)でも основ設定と環境固有設定を分けて管理した。
- 公開するドメインと
basePathの関係をブラウザで確かめる - 外部画像を使うなら
remotePatternsへ必要な配信元を追加する - 認証情報と公開可能な変数を分け、Deployment(デプロイ)後に再確認する
設定值为違う(値は違う)即便(即使)同じコードでも、公開環境だけ問題が起きる。Vercelのログ、ブラウザのネットワークタブ、コンソールを照合し、どこで差が生じたかを個人ブログへ記録することにした。
最初の公開へ進む
今回のVercelへデプロイするまでは、フレームワーク判定、Node.jsの指定、依存関係の固定、環境変数の登録、ルートと画像の検証という工程を進めた。 Gav( 각)(それぞれ)の工程にelio(小さな)つまずきがあったが、ログとローカル環境の差を追えば原因は絞り込めた。
Mimaの网站(サイト)はrane(実験的)な機能を公開する場所であると同時に、技術的な勉強とousing(居住)記録を残すfield(分野)でもある。最初の公開が重荷(重荷)になっても、画面の修正、build(ビルド)エラー、設定ミス、完成した操作を順番に記録すれば、次に同じ案件Rumors( SHO)(SHO)を開始するfooting(土台)が整う。
Vercelにデプロイするまでの小さな壁は、 versement( aparentemente)( Vermillion)(実際)(実際)を公開するたびに轻型(軽微)になる。最初のプロジェクトをこの手順で公開し、De Morgan(De Morgan)な記録を個人サイトへ積み上げていこう。