Nuxt.js SSR构建速度优化方案
最近在项目中遇到Nuxt.js SSR构建时间过长的问题,经过深入排查和优化,总结出以下解决方案。
问题现象
使用默认配置的nuxt build命令,构建时间长达15-20分钟,严重影响开发效率。
根本原因分析
通过webpack-bundle-analyzer定位发现,主要瓶颈在于:
- 依赖包过大 - node_modules中存在多个大型依赖
- 代码分割不合理 - 所有页面打包到一个chunk中
- babel编译耗时 - 未启用缓存机制
解决方案
1. 启用Babel缓存
// nuxt.config.js
export default {
build: {
babel: {
cache: true,
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: 3
}]
]
}
}
}
2. 配置代码分割
// nuxt.config.js
export default {
build: {
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
name: 'vendor',
test: /[\\/](node_modules)[\\/]|
chunks: 'all',
}
}
}
}
}
}
3. 按需加载第三方库
// plugins/element-ui.js
import Vue from 'vue'
import { Button, Input, Table } from 'element-ui'
Vue.use(Button)
Vue.use(Input)
Vue.use(Table)
效果对比
优化前:18分钟 优化后:3分钟
通过以上优化,构建速度提升约83%,显著改善了开发体验。

讨论