/// /// import Vue from '@vitejs/plugin-vue' import VueJsx from '@vitejs/plugin-vue-jsx' import { globbySync } from 'globby' import { defineConfig } from 'vite' import dts from 'vite-plugin-dts' import pkg from './package.json' export default defineConfig({ esbuild: { // jsxFactory: 'h', // jsxFragment: 'Fragment', jsxInject: `import { h, Fragment } from 'vue'`, }, plugins: [ dts({ // TODO We should not skip diagnostics // skipDiagnostics: true, entryRoot: 'src', staticImport: true, }), Vue(), VueJsx(), ], test: { // setupFiles: 'src/setup-test.ts', // coverage: { // provider: 'v8', // all: true, // reporter: ['lcov', 'text'], // include: ['src/**'], // exclude: ['**/*.stories.tsx'], // }, globals: true, environment: 'happy-dom', transformMode: { web: [/.[tj]sx$/], }, }, build: { target: 'esnext', minify: false, lib: { entry: globbySync('src/**/index.ts'), formats: ['es', 'cjs'], fileName: (format) => (format === 'es' ? 'index.mjs' : 'index.cjs'), }, rollupOptions: { external: [ ...Object.keys(pkg.dependencies ?? {}), ...Object.keys(pkg.peerDependencies ?? {}), 'vue', ], output: [ { format: 'cjs', preserveModules: true, preserveModulesRoot: 'src', exports: 'named', entryFileNames: '[name].cjs', }, { format: 'es', preserveModules: true, preserveModulesRoot: 'src', exports: 'named', entryFileNames: '[name].mjs', }, ], }, }, })