iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

把 Next.js 專案部署上 Vercel 非常簡單,註冊帳號後選擇連動的 Github 帳號,然後建立 project 選擇要部署的 Repo ,搭配 Vercel 的 Next.js preset 就設定好了。

不過因為現在是 NX monorepo 架構,設定上稍微有些不同。

一開始的流程都一樣,連動 Github 後選擇 Repo ,搭配 Next.js preset。

再來 Build and Output Settings 中,要將設定變更,先開啟 Override 設定後才能變更。

# Build Command
npx nx build ironman-nextjs --prod

# Output Directory
dist/apps/ironman-nextjs/.next

建置的指令跟建置後檔案的位置都跟一般的 Next.js 專案不同。

另外我是用 pnpm 做安裝,要參考 pnpm-lock.yaml ,所以套件安裝指令也換一下。

# Install command
pnpm install

https://ithelp.ithome.com.tw/upload/images/20230914/201289023LwY48qZ8g.png

設定好後按下 Deploy 按鈕就會開始建置跟部署了。

可以對 Monorepo 的專案個別去建立對應的 Vercel project ,這樣當 monorepo 的主分支更新時,所有的專案都會做更新。

另外 Vercel 除了在主幹更新時會建置並部署上 production 外,也預設觀察這個 Github repo 的 PR,並建置對應該 PR 的 preview 站點,可以直接確認改動是否會造成無法建置跟建置後的結果,非常方便。

不過如果每個 PR 都要對所有 monorepo 底下的專案進行建置,那耗損的資源會很可觀,而且可能該 PR 的內容跟某些專案毫無關係。

這時候就要設定一下讓 Vercel project 知道這次變更的影響範圍是否包含該 project 的更新,以避免無謂的自動處理。

打開 Vercel 專案,找到 Settings → Git → Ignored Build StepBehavior 選單選擇 Custom ,然後設定指令。

npx nx-ignore ironman-nextjs

這樣當 PR 更新時,會先用指令檢查這次的變更範圍是否跟指定的專案有關,若是無關就會取消這次的建置,節省資源。

https://ithelp.ithome.com.tw/upload/images/20230914/20128902fls4JGhLBK.png


上一篇
NX Task pipeline & Cache
下一篇
Next App Router 其一
系列文
組裝前端開發工具箱,從 NX 入手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言