⚙️ Next.js 多环境部署全攻略

🧭 一、为什么要进行多环境部署?

在现代 Web 开发中,我们常常需要在不同环境中测试与上线:

环境 说明 典型用途
🧪 Development 本地开发环境 本地调试、快速重启、实验功能
👀 Preview (Staging) 临时预览环境 Pull Request 预览、产品验收测试
🚀 Production 线上正式环境 最终用户访问

Vercel 上,这三个环境会自动对应到你的部署阶段:

  • 本地运行:next dev → Development
  • 分支部署:git push feature/... → Preview
  • 合并主分支:git push main → Production

🌱 二、环境变量的分离与管理

Next.js 内置了对多环境变量文件的支持,你可以在根目录下创建以下文件:

bash 复制代码
.env.local         # 本地开发环境
.env.development   # `next dev` 使用
.env.preview       # Vercel Preview 环境使用
.env.production    # Vercel Production 环境使用

🧩 示例变量配置

.env.local

ini 复制代码
NEXT_PUBLIC_API_BASE=http://localhost:3000/api
PRIVATE_KEY_LOCAL=dev_secret

.env.preview

ini 复制代码
NEXT_PUBLIC_API_BASE=https://preview-api.example.com
PRIVATE_KEY_PREVIEW=preview_secret

.env.production

ini 复制代码
NEXT_PUBLIC_API_BASE=https://api.example.com
PRIVATE_KEY_PRODUCTION=prod_secret

🧠 三、Next.js 环境变量加载逻辑

Next.js 会在构建时读取环境变量,根据运行命令自动选择优先级:

优先级从高到低:

bash 复制代码
.env.local > .env.[mode] > .env

并且:

  • NEXT_PUBLIC_ 开头的变量会暴露到浏览器端。
  • 其他变量(如数据库密钥)仅在 Node.js 端可访问。

⚡ 四、在 Vercel 中配置环境变量

当部署在 Vercel 上时,环境变量的管理可以更轻松。

🧩 操作步骤:

  1. 打开项目 → 点击 Settings → Environment Variables
  2. 添加以下键值:
Name Value Environment
NEXT_PUBLIC_API_BASE http://localhost:3000/api Development
NEXT_PUBLIC_API_BASE https://preview-api.example.com Preview
NEXT_PUBLIC_API_BASE https://api.example.com Production

💡 一次设置即可,推送/部署时 Vercel 自动选取对应的环境。


🧰 五、Vercel CLI 配置与部署流程

安装 CLI:

复制代码
npm install -g vercel

登录并初始化:

csharp 复制代码
vercel login
vercel init

📦 部署命令:

命令 作用
vercel dev 启动本地 Vercel 模拟环境(等价于 next dev
vercel 部署到 Preview 环境(默认)
vercel --prod 部署到 Production

🌍 示例输出

vbnet 复制代码
▲ Vercel CLI 31.0.1
Deploying Next.js project to Vercel...
✔️  https://myapp-preview.vercel.app   (preview)
→ Run `vercel --prod` to deploy to production.

🧩 六、在代码中使用环境变量(JS示例)

javascript 复制代码
export default function ApiDemo() {
  const base = process.env.NEXT_PUBLIC_API_BASE;

  async function loadData() {
    const res = await fetch(`${base}/lessons`);
    const data = await res.json();
    console.log("👀 当前环境来自于:", base);
  }

  return (
    <div>
      <h3>🌐 当前环境: {base}</h3>
      <button onClick={loadData}>加载数据</button>
    </div>
  );
}

🧠 七、加点幽默的总结

  • Development 是"想法冒泡"的温床。
  • Preview 是"老板先别上线,我再改两下"的保险阀。
  • Production 是"上线那一刻,所有 commit 都变成命运的签名"。

而你,作为开发者,不再需要在 .env 文件中手忙脚乱地切换。

一条命令,一个环境,一个世界。


🚀 八、快速总结图

css 复制代码
graph TD
A[本地 Dev 环境] -->|vercel| B[Preview 环境 (分支)]
B -->|vercel --prod| C[Production 正式环境]
A --> D[.env.local]
B --> E[.env.preview]
C --> F[.env.production]

🎯 最佳实践:

  • 使用 .env.xxx 文件分离不同环境。
  • 对外暴露变量必须加 NEXT_PUBLIC_ 前缀。
  • 通过 Vercel 环境管理控制 Preview/Prod。
  • 使用 vercel / vercel --prod 明确部署目标。
相关推荐
极梦网络无忧20 分钟前
基于 Vite + Vue3 的组件自动注册功能
前端·javascript·vue.js
Predestination王瀞潞33 分钟前
5.4.3 通信->WWW万维网内容访问标准(W3C):WWW(World Wide Web) 协议架构(分层)
前端·网络·网络协议·架构·www
爱学习的程序媛43 分钟前
【Web前端】优化Core Web Vitals提升用户体验
前端·ui·web·ux·用户体验
zabr44 分钟前
花了 100+ 篇笔记,我整理出 了一套 AI Agent 工程完全指南
前端·后端·agent
软弹1 小时前
深入理解 React Ref 机制:useRef 与 forwardRef 的协作原理
前端·javascript·react.js
YaHuiLiang1 小时前
Ai Coding浪潮下的前端:“AI在左,裁员在右”
前端
雪碧聊技术1 小时前
前端vue代码架子搭建
前端·javascript·vue.js·前端项目代码框架搭建
爱学习的程序媛1 小时前
【Web前端】前端用户体验优化全攻略
前端·ui·交互·web·ux·用户体验
han_1 小时前
JavaScript设计模式(二):策略模式实现与应用
前端·javascript·设计模式
x***r1511 小时前
Notepad++ 8.6 安装教程:详细步骤+自定义安装路径(附注意事项)
linux·前端·javascript