3.9 KiB
3.9 KiB
静态部署指南
🚀 静态打包命令
构建静态文件
npm run build:static
本地预览静态网站
npm run preview
仅构建(不启动服务器)
npm run build
仅启动静态文件服务器
npm run serve
📁 输出目录
静态文件将生成在 out/ 目录中,包含:
out/
├── index.html # 首页 (简体中文)
├── zh-TW/
│ ├── index.html # 繁体中文首页
│ ├── about/index.html # 关于我们页面
│ ├── products/index.html # 产品页面
│ ├── news/
│ │ ├── index.html # 新闻列表
│ │ └── [id]/index.html # 新闻详情
│ └── support/index.html # 支持页面
├── en/
│ ├── index.html # 英文首页
│ └── ... # 其他英文页面
├── news/
│ ├── index.html # 默认语言新闻列表
│ └── [id]/index.html # 默认语言新闻详情
├── about/index.html # 默认语言关于页面
├── products/index.html # 默认语言产品页面
├── support/index.html # 默认语言支持页面
└── _next/ # Next.js 静态资源
🌐 部署到不同平台
1. Netlify
- 将
out/目录拖拽到 Netlify 控制台 - 或连接 Git 仓库,设置构建命令:
Build command: npm run build:static Publish directory: out
2. Vercel
npx vercel --prod
3. GitHub Pages
- 将
out/目录内容推送到gh-pages分支 - 在仓库设置中启用 GitHub Pages
4. 服务器部署
将 out/ 目录上传到服务器的网站根目录
⚙️ 配置说明
基础路径配置
如果需要部署到子目录,修改 next.config.mjs:
const nextConfig = {
output: 'export',
basePath: '/your-subdirectory', // 取消注释并设置路径
// ...
};
图片优化
静态导出中图片优化已设置为:
images: {
unoptimized: true, // 静态导出必需
}
🔄 多语言路由说明
静态导出后的路由结构:
- 简体中文 (默认):
/,/about,/news/xxx - 繁体中文:
/zh-TW/,/zh-TW/about,/zh-TW/news/xxx - 英文:
/en/,/en/about,/en/news/xxx
⚠️ 注意事项
静态导出限制
- 无服务器端渲染:所有页面在构建时生成
- 无中间件:语言切换依赖客户端逻辑
- 无动态API路由:不能使用
/api路由 - 无服务器端重定向:依赖客户端跳转
语言切换机制
在静态模式下:
- 中间件不会执行
- 语言切换完全依赖客户端 JavaScript
- Cookie 设置在客户端进行
新增文章
如需添加新文章,需要:
- 在
docs/news/中添加 Markdown 文件 - 更新页面中的
generateStaticParams函数 - 重新构建
🧪 测试
本地测试
# 构建并预览
npm run preview
# 访问 http://localhost:3000
构建验证
# 检查构建输出
npm run build:static
ls -la out/
# 验证多语言页面
ls -la out/zh-TW/
ls -la out/en/
🔧 故障排除
常见问题
- 页面404:检查
generateStaticParams是否包含所有路由 - 样式丢失:确认 CSS 文件正确引入
- 图片不显示:检查图片路径和
unoptimized: true设置 - 语言切换无效:确认 JavaScript 已启用
调试步骤
- 检查
out/目录结构 - 查看浏览器开发者工具控制台
- 验证静态文件访问路径
📈 性能优化
- ✅ 自动代码分割
- ✅ 静态资源优化
- ✅ CSS 压缩
- ✅ JavaScript 压缩
- ✅ 预加载关键资源
静态导出的网站加载速度极快,适合 CDN 分发!