monorepo 项目打包时遇到如下问题:
$pnpm -F microsmart build
> microsmart@0.0.0 build /home/barwe/projects/monobr/app
> vue-tsc --noEmit && vite build
Use API: http://127.0.0.1:3000/
vite v3.1.7 building for production...
transforming (1) index.html[vite-plugin-vue-images] no images found
✓ 235 modules transformed.
[vite]: Rollup failed to resolve import "vue" from "../oviz/components/utils/palette.ts".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`
参考 https://github.com/vitejs/vite/issues/6607 的解答,原因是 rollup 打包时找不到 @oviz/components 包的依赖。从报错信息来看,@oviz/components 包似乎依赖于 vue,虽然我的 @oviz/components 包源码并没有直接引入 vue。
我的 monorepo 结构如下:
monorepo
|-- microsmart
|-- package.json
|-- @oviz/components
|-- package.json
|-- @oviz/crux
|-- package.json
|-- package.json
经检查,vue 依赖只存在 microsmart 包中,解决办法是将 vue 依赖从 microsmart/package.json 移动到 monorepo/package.json 中。
评论区