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.
// 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)