Vite打包时如何正确配置Rollup排除node_modules中的特定包?

小婉琳 阅读 27

我在用 Vite 构建 Vue3 项目,想通过 Rollup 配置把某个第三方库(比如 lodash-es)从打包结果中排除,但试了几次都没成功,build 后还是被打包进去了。

我查了文档,在 vite.config.js 里加了 build.rollupOptions.external,但好像没生效。是不是写法有问题?下面是我的组件代码:

<script setup>
import { debounce } from 'lodash-es'

const handleInput = debounce(() => {
  console.log('debounced')
}, 300)
</script>

<template>
  <input @input="handleInput" />
</template>

我期望的是 lodash-es 不被打包,而是通过 CDN 引入,但目前它还是被 rollup 打进 chunk 里了。

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
码农景景
试试这个,在 vite.config.js 里这样写:

import { defineConfig } from 'vite'

export default defineConfig({
build: {
rollupOptions: {
external: ['lodash-es']
}
}
})


记得在 html 里用 script 标签通过 CDN 引入 lodash-es,顺序要在你的打包文件之前。这玩意儿有时候就是这么奇怪,配置对了就好。
点赞
2026-03-29 15:10
继芳酱~
在 vite.config.js 里这样写应该能用,记得路径要对:

export default {
build: {
rollupOptions: {
external: ['lodash-es']
}
}
}


然后再通过 vite 的插件机制配置 cdn 引入。要是还打包进去,检查下是不是其他地方又引用了这个包。熬夜调试最烦这种问题了,祝你好运。
点赞
2026-03-27 08:00