41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { fileURLToPath } from 'node:url'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import { defineConfig } from 'vite'
|
|
import dts from 'vite-plugin-dts'
|
|
|
|
/**
|
|
* 组件库构建:产出 ESM + 类型声明。
|
|
*
|
|
* 关键点:
|
|
* - vue 必须外置(external),否则包里会打进一份 Vue,消费方出现双实例
|
|
* - preserveModules 保留源码结构,消费方能按需 tree-shaking
|
|
* - vite-plugin-dts 生成 dist/index.d.ts,配合 package.json 的 exports.types
|
|
*/
|
|
export default defineConfig({
|
|
plugins: [
|
|
vue(),
|
|
dts({
|
|
// 只产出声明文件,JS 交给 vite 本体
|
|
include: ['src'],
|
|
outDir: 'dist',
|
|
rollupTypes: true,
|
|
}),
|
|
],
|
|
build: {
|
|
lib: {
|
|
entry: fileURLToPath(new URL('./src/index.ts', import.meta.url)),
|
|
formats: ['es'],
|
|
fileName: () => 'index.js',
|
|
},
|
|
rollupOptions: {
|
|
external: ['vue'],
|
|
output: {
|
|
preserveModules: true,
|
|
preserveModulesRoot: 'src',
|
|
entryFileNames: '[name].js',
|
|
assetFileNames: 'style.css',
|
|
},
|
|
},
|
|
},
|
|
})
|