UNPKG

@tianyio/quality-helper

Version:

A comprehensive quality helper tool for project scaffolding and management

99 lines (92 loc) 2.9 kB
import { defineConfig, mergeConfig, type UserConfig } from 'vite' import { resolve } from 'path' import babel from '@rollup/plugin-babel' import dts from 'vite-plugin-dts' export default defineConfig(env => { const config: UserConfig = { // 插件配置 plugins: [ // 集成Babel处理兼容性,完全使用外部babel配置文件 babel({ babelHelpers: 'bundled', extensions: ['.js', '.jsx', '.ts', '.tsx'], // 指定使用根目录的babel配置文件 configFile: resolve(__dirname, '../../babel.config.js'), // 确保只处理源代码,不处理node_modules exclude: 'node_modules/**', }), dts({ entryRoot: 'src', // 输出目录 outDir: 'dist/@types', // 包含的文件 include: ['src/**/*'], // 排除的文件 exclude: ['src/**/*.test.ts', 'src/**/*.spec.ts', 'templates/**/*'], // 生成类型声明文件 insertTypesEntry: true, // 复制非TypeScript文件 copyDtsFiles: true, // 静态导入 staticImport: true, // 清理输出目录 cleanVueFileName: true, }), ], resolve: { // alias需要在根配置中映射 }, optimizeDeps: { // 默认已排除 node_modules,如需额外排除可添加 exclude: [], esbuildOptions: { // 禁用 esbuild 的 TypeScript 转译,让 Babel 处理 tsconfigRaw: {} as any, }, }, // 构建配置 build: { lib: { entry: { index: resolve(__dirname, 'src/index.ts'), }, name: 'MyLib', // UMD模式下的全局变量名(如window.MyUtils) formats: ['es', 'cjs'], fileName: (format: any, fileName: string) => `${format}/${fileName}.js`, }, rollupOptions: { // 排除外部依赖(不打包进库,由使用者自行安装) external: (id: string) => { // 将 peerDependencies 设为外部依赖 if (id === 'vue' || id.startsWith('vue/')) return true if (id === 'lodash-es' || id.startsWith('lodash-es/')) return true // 将 Node.js 内置模块设为外部依赖 const nodeBuiltins = [ 'fs', 'path', 'url', 'util', 'crypto', 'stream', 'events', 'buffer', 'querystring', 'os', 'child_process', 'cluster', ] if (nodeBuiltins.includes(id)) return true return false }, output: { // 为外部依赖指定全局变量名(仅UMD模式需要) globals: { vue: 'Vue', 'lodash-es': '_', // 当使用UMD时,window._ 对应 lodash-es }, }, }, }, } return config })