個人網頁開發
EP.08

Vercel 部署上線
push 一下,全世界都能看到

GitHub + Vercel,免費、自動化、有預覽 URL,
這就是 chullin.vercel.app 的部署方式

Joseph Chen

2024
5 min read
1.2k views

做到這篇,你已經有了一個在本機跑起來的個人網頁。最後一步:把它放到網路上,讓任何人都能用網址訪問。

我選擇 Vercel。它是 Next.js 的親生父母(Vercel 公司開發了 Next.js),對 Next.js 的支援是最好的。 更重要的是:對個人專案完全免費,而且設定超簡單

部署流程一覽

💻本機開發localhost:3000
🐙push 到 GitHubgit push
Vercel 自動建置約 1–2 分鐘
🌍上線!xxx.vercel.app

設定好之後,每次你 git push,Vercel 會自動偵測到並重新部署。完全不需要手動操作

前置:Git 基礎

Vercel 需要從 GitHub 拉你的程式碼,所以先要把專案推到 GitHub。如果你還沒用過 Git,這裡快速介紹你需要知道的幾個指令:

git init

在專案資料夾初始化 Git,只做一次

git add .

把所有改動的檔案加入暫存區(準備提交)

git commit -m "first commit"

建立一個提交(快照),記錄這個時間點的程式碼狀態

git remote add origin https://github.com/你的帳號/專案名.git

連接到 GitHub 上的遠端倉庫

git push -u origin main

把程式碼推送到 GitHub

create-next-app 已經幫你 git init 了! 用 create-next-app 建立的專案,初始化時已自動執行 git init。你只需要建立 GitHub repo 並 push 即可,不需要再 git init。

部署步驟:從零到上線

1

在 GitHub 建立 Repository

前往 github.com,登入後點右上角 「+」→「New repository」

Repository name你的專案名稱,例如 my-portfolio
VisibilityPublic(Vercel 免費方案可用私有 repo,但 Public 更方便)
Initialize README不要勾選(你的本機已有程式碼,不需要)

建立後,GitHub 會給你一個 URL,類似 https://github.com/你的帳號/my-portfolio.git

2

把本機程式碼推到 GitHub

terminal — 依序執行
# 如果還沒有任何 commit
git add .
git commit -m "initial commit"

# 連接遠端倉庫(把 URL 換成你的)
git remote add origin https://github.com/你的帳號/my-portfolio.git
git branch -M main

# 推送
git push -u origin main

推送成功後,到 GitHub 頁面重整,應該能看到你的程式碼出現在上面。

3

在 Vercel 連接 GitHub

最重要

前往 vercel.com,點 Sign Up → Continue with GitHub(用 GitHub 帳號登入)。

登入後進入 Dashboard,點 「Add New → Project」

選擇 GitHub repo

在列表裡找到剛才建立的 my-portfolio,點「Import」

設定(幾乎不需要改)

Framework Preset 會自動偵測為 Next.js。Build Command、Output Directory 都不用動。

點「Deploy」

Vercel 會開始建置,大約 1–2 分鐘後完成

建置完成後,Vercel 會給你一個 URL,格式是 專案名稱.vercel.app。我的是 chullin.vercel.app這個 URL 是永久的,馬上可以分享給別人。
4

之後每次更新:只要 git push

連接好之後,之後修改程式碼、想更新線上版本,只需要:

terminal — 每次更新的固定流程
# 查看哪些檔案改動了
git status

# 加入所有改動
git add .

# 寫 commit 說明(描述這次改了什麼)
git commit -m "add EP.08 blog post"

# 推送 → Vercel 自動重新部署
git push

Push 之後大約 30 秒到 2 分鐘,Vercel 就完成重新部署,線上版本自動更新。

環境變數(敏感資料保護)

如果你的專案有用到 API 金鑰(例如 EmailJS 的 Key、Google 的 API),絕對不能直接寫在程式碼裡推上 GitHub,要用環境變數:

.env.local(只在本機,不推到 GitHub)
# .env.local
NEXT_PUBLIC_EMAILJS_SERVICE_ID=service_xxxx
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=template_xxxx
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=xxxxxxxxxxxxxxx
程式碼裡用 process.env 存取
// 用 process.env 讀取
emailjs.send(
  process.env.NEXT_PUBLIC_EMAILJS_SERVICE_ID!,
  process.env.NEXT_PUBLIC_EMAILJS_TEMPLATE_ID!,
  formData,
  process.env.NEXT_PUBLIC_EMAILJS_PUBLIC_KEY!
);

然後在 Vercel 的 Dashboard 裡設定同樣的環境變數:

Vercel Dashboard → 你的專案 → Settings → Environment Variables

在這裡把 .env.local 裡的 key-value 輸入進去,Vercel 建置時會自動注入這些變數。

⚠️
記得把 .env.local 加入 .gitignore! create-next-app 已經自動把它加進去了,所以通常不用擔心。但建立新專案時最好確認一下 .gitignore 裡有沒有 .env.local

Preview Deployments — 分支預覽

Vercel 有一個很實用的功能:每個 Git branch 都有獨立的預覽 URL

你在 main branch push → 正式環境更新。 你在 feature/new-design branch push → 產生一個臨時的預覽 URL,不影響正式網站。

terminal — 使用 feature branch 安全預覽
# 建立新分支
git checkout -b feature/add-contact-page

# 做修改...
git add .
git commit -m "add contact page"
git push origin feature/add-contact-page
# Vercel 自動給你 https://my-portfolio-git-feature-add-contact-page-xxxx.vercel.app

# 預覽沒問題後,合併到 main
git checkout main
git merge feature/add-contact-page
git push origin main  # ← 這才更新正式網站
💡
這個功能讓你可以「先看到效果再上線」。我自己每次做大的 UI 改動都會開新 branch,確認預覽 URL 沒問題才 merge 到 main。

自訂網域(選用)

xxx.vercel.app 是免費的。如果你想要像 josephchen.dev 這樣的自訂網域,需要另外購買。

購買網域

Namecheap、GoDaddy、Google Domains(現已轉移到 Squarespace)等平台,.dev 或 .io 約 10–20 美金/年。

在 Vercel 設定

Dashboard → Settings → Domains → 輸入網域 → 在你的 DNS 提供商加入 Vercel 指定的 A record 或 CNAME。

個人作品集用 xxx.vercel.app 完全夠用,面試官和 HR 看的是內容,不是域名。等你確定長期使用這個網頁了再考慮買網域。

系列完結:完整技術棧一覽

走完 8 篇,你現在了解了打造我的個人網頁所用到的每一塊拼圖:

EP.01
🗺️

現代網頁開發

從 HTML/CSS/JS 到 React 到 Next.js 的演進地圖

EP.02
🛠️

開發環境建置

Node.js + VS Code + create-next-app + npm run dev

EP.03
📁

Next.js 專案結構

app/ 路由規則、layout.tsx、components/、public/

EP.04
⚛️

React 核心概念

Component、JSX、Props、useState、use client

EP.05
🎨

Tailwind CSS

class 名稱即樣式、響應式前綴、flex/grid 排版

EP.06
🧩

HeroUI 元件庫

Card、Button、Chip — 現成 UI 積木直接用

EP.07

Framer Motion

motion.div、whileInView、spring 動畫

EP.08
🌍

Vercel 部署

GitHub push → 自動部署,免費上線 vercel.app

這篇學到什麼

Vercel 是 Next.js 親生父母,對 Next.js 支援最好,個人方案免費
🔄設定好之後:git push → Vercel 自動偵測 → 自動建置 → 自動上線,完全不需要手動操作
🔐敏感資料放 .env.local,不推 GitHub;在 Vercel Dashboard 另外設定環境變數
🌿Preview Deployments:feature branch push 產生臨時預覽 URL,確認沒問題再 merge 到 main
🌐預設域名 xxx.vercel.app 完全夠用,有需要再買自訂網域
Web Dev
Vercel
部署
GitHub
CI/CD
EP.08