ant-design-vue/packages-config/vite-config/vite.config.lib.js

64 lines
1.8 KiB
JavaScript

// @ts-nocheck
import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'
import { defineConfig } from 'vite'
import dts from 'vite-plugin-dts'
/**
* @type {import('./index.d.ts').GetUserConfig}
*/
export default (dirname, overwriteLib) =>
defineConfig(({ mode }) => {
const pkg = JSON.parse(readFileSync(resolve(dirname, './package.json'), 'utf-8'))
const isDev = mode === 'development'
return {
plugins: [
dts({
outDir: 'dist',
compilerOptions: { declarationMap: isDev },
include: ['src/**/*.ts', 'src/**/*.vue', 'src/**/*.d.ts'],
insertTypesEntry: true,
skipDiagnostics: false,
}),
],
build: {
lib: overwriteLib
? undefined
: {
entry: {
lib: resolve(dirname, 'src/index.ts'),
},
formats: ['es', 'cjs'],
fileName: (format, entryName) => `${entryName}.${format === 'es' ? 'mjs' : 'cjs'}`,
},
rollupOptions: {
external: isDev
? id => {
if (pkg.peerDependencies && id in pkg.peerDependencies) {
return true
}
if (/^@(ant-design-vue)\//.test(id)) {
return true
}
return false
}
: pkg.peerDependencies && Object.keys(pkg.peerDependencies),
},
sourcemap: isDev ? 'inline' : undefined,
minify: !isDev,
emptyOutDir: !isDev,
watch: process.argv.includes('--watch')
? {
buildDelay: 300,
}
: null,
},
resolve: {
alias: {
'@': resolve(dirname, './src'),
},
},
}
})