Dependency Pre-bundling

A library like lodash-es ships hundreds of tiny ESM files; a CommonJS package isn't even ESM. Vite pre-bundles each dependency into one optimized ESM file in node_modules/.vite/deps.

node_modules (raw)
node_modules/.vite/deps (pre-bundled)
requests before
requests after
Click run to pre-bundle the two dependencies.

Controlling it

// vite.config.ts — usually you need none of this; Vite auto-detects.
export default defineConfig({
  optimizeDeps: {
    // force-include a dep Vite missed (e.g. used only dynamically)
    include: ["my-lib/submodule"],
    // skip a dep that's already ESM and shouldn't be pre-bundled
    exclude: ["my-esm-only-lib"],
  },
});

// when deps act stale, nuke the cache:
//   rm -rf node_modules/.vite   (or: vite --force)