第 10 章:部署与构建优化

99 阅读2分钟

第 10 章:部署与构建优化


10.1 构建与部署概览

Next.js 支持多种部署方式:

部署方式是否推荐说明
Vercel✅ 官方推荐支持 SSR、ISR、Edge Functions
Netlify支持 SSG + API Functions
自建服务器(Node.js 环境)适合有后端运维经验的项目
静态导出(Static HTML)⚠️ 仅支持 SSGSSR / API 功能将失效

10.2 使用 Vercel 部署(推荐)

🧭 步骤:

  1. 注册 Vercel(vercel.com)
  2. 关联你的 GitHub/GitLab 仓库
  3. 导入项目(自动识别 Next.js)
  4. 部署成功后自动分配 .vercel.app 域名

✅ 优势:

  • 支持 SSR / ISR / API Routes
  • 支持 Edge Middleware
  • 免费计划已能满足中小项目
  • 自动 CI/CD 集成

10.3 构建命令与环境变量

📦 构建命令

npm run build    # 编译构建
npm start        # 启动生产服务(需要 build 后执行)

📁 输出目录

构建后会生成:

.next/
  ├── server/           # SSR 输出
  ├── static/           # 静态资源
  └── ...               # 其他构建产物

📄 配置环境变量

根目录新建 .env.production

DATABASE_URL=mysql://user:pass@host:port/dbname
JWT_SECRET=your-secret-key

代码中可通过 process.env.DATABASE_URL 获取。


10.4 使用 Docker 部署(可选)

📄 Dockerfile

# 基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 安装依赖
COPY package*.json ./
RUN npm install

# 拷贝代码
COPY . .

# 构建项目
RUN npm run build

# 启动应用
EXPOSE 3000
CMD ["npm", "start"]

📄 构建镜像并运行

docker build -t next-app .
docker run -p 3000:3000 next-app

10.5 静态导出部署(仅适用于 SSG)

npm run build
npm run export   # 导出纯静态 HTML

输出到 /out 目录,可部署至:

  • GitHub Pages
  • VitePress / 静态文件服务器
  • OSS/CDN 等

⚠️ 注意:

  • 不支持 SSR、API Routes、中间件等功能
  • 适合博客、文档等全静态内容

10.6 构建优化建议

优化项方法
⏱️ 代码分割默认支持按页面打包
📷 图片优化使用 <Image /> + 自动 CDN 压缩
📦 资源体积分析使用 next build && next analyze
🌐 CDN 分发图片、静态资源配置 CDN 域名
⏳ 首屏优化延迟加载组件 / 骨架屏
🔍 使用 ISR实现静态页面定时更新(revalidate
✅ 自动预加载<Link /> 组件默认会预加载目标页面

10.7 使用分析工具

✅ 构建体积分析(webpack)

npm install @next/bundle-analyzer

📄 next.config.js

const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});
module.exports = withBundleAnalyzer({});

执行分析:

ANALYZE=true npm run build

✅ 小结

主题内容
推荐平台Vercel(全功能支持)
构建命令npm run build && npm start
环境变量.env.production 文件
Docker支持容器化部署
静态导出仅适合 SSG 场景
性能优化图片压缩 / 延迟加载 / 代码分割
分析工具@next/bundle-analyzer 查看打包体积