全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 7 分钟 ✍️ juanwangdev

构建缓存与增量构建

Vite 利用缓存机制加速开发和构建,减少重复编译。

Vite 缓存层级

缓存位置内容
node_modules/.vite依赖预构建缓存
浏览器缓存静态资源缓存
文件系统缓存模块编译结果

依赖缓存

Bash
node_modules/.vite/
├── deps/          # 预构建依赖
├── _metadata.json # 缓存元数据

缓存命中条件:

  • package.json 未变化
  • lock 文件未变化
  • vite.config.js optimizeDeps 未变化

清除依赖缓存

JavaScript
# 手动清除
rm -rf node_modules/.vite

# 或使用命令
vite --force

构建产物缓存

Rollup 构建时模块编译结果可缓存:

JavaScript
export default defineConfig({
  build: {
    // 缓存构建结果
    cacheDir: '.vite-cache'
  }
})

注意:二次构建利用缓存减少编译时间。

插件缓存

JavaScript
export default function cachePlugin() {
  const cacheFile = '.plugin-cache.json'

  return {
    name: 'cache-plugin',
    buildStart() {
      // 加载缓存
      if (fs.existsSync(cacheFile)) {
        this.cache = JSON.parse(fs.readFileSync(cacheFile))
      }
    },
    buildEnd() {
      // 保存缓存
      fs.writeFileSync(cacheFile, JSON.stringify(this.cache))
    }
  }
}

增量构建策略

YAML
// 只构建修改的模块
export default defineConfig({
  build: {
    // watch 模式增量构建
    watch: {}
  }
})

CI 缓存配置

text
# GitHub Actions 缓存
- name: Cache vite deps
  uses: actions/cache@v3
  with:
    path: node_modules/.vite
    key: vite-deps-${{ hashFiles('package-lock.json') }}

缓存效果对比

场景无缓存有缓存
首次启动5-10秒5-10秒
二次启动5-10秒1-2秒
依赖未变-直接使用缓存

最佳实践

  • 不要频繁清除缓存
  • lock 文件保持稳定
  • CI 配置依赖缓存
  • 插件使用持久缓存

要点总结

  • node_modules/.vite 存储预构建缓存
  • 依赖未变化时直接使用缓存
  • vite --force 强制重建缓存
  • CI 配置缓存加速构建

📝 发现内容有误?点击此处直接编辑

← 上一篇 动态导入与懒加载策略
下一篇 → SSR 客户端注水优化
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库