mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-02-15 09:12:39 +00:00
84 lines
2.2 KiB
TypeScript
84 lines
2.2 KiB
TypeScript
import { exec } from 'node:child_process'
|
|
import { copyFile } from 'node:fs/promises'
|
|
import { resolve } from 'node:path'
|
|
import { promisify } from 'node:util'
|
|
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import dts from 'vite-plugin-dts'
|
|
import tsconfigPaths from 'vite-tsconfig-paths'
|
|
import { defineConfig } from 'vitest/config'
|
|
|
|
const execAsync = promisify(exec)
|
|
|
|
export default defineConfig({
|
|
optimizeDeps: {
|
|
exclude: ['vue-demi'],
|
|
},
|
|
plugins: [
|
|
vue(),
|
|
tailwindcss(),
|
|
tsconfigPaths(),
|
|
dts({
|
|
include: ['src/**/*.ts', 'src/**/*.vue', 'src/**/*.d.ts'],
|
|
outDir: 'dist',
|
|
rollupTypes: true,
|
|
copyDtsFiles: true,
|
|
afterBuild: async () => {
|
|
// Generate .d.cts files for CJS compatibility
|
|
await copyFile('dist/index.d.ts', 'dist/index.d.cts')
|
|
await copyFile('dist/tailwind.preset.d.ts', 'dist/tailwind.preset.d.cts')
|
|
},
|
|
}),
|
|
// Build CSS separately using Tailwind CLI
|
|
{
|
|
name: 'build-css',
|
|
closeBundle: async () => {
|
|
await execAsync('npx @tailwindcss/cli -i src/styles/index.css -o dist/style.css --minify')
|
|
},
|
|
},
|
|
],
|
|
build: {
|
|
lib: {
|
|
entry: {
|
|
index: resolve(__dirname, 'src/index.ts'),
|
|
'tailwind.preset': resolve(__dirname, 'src/tailwind.preset.ts'),
|
|
},
|
|
formats: ['es', 'cjs'],
|
|
fileName: (format, entryName) => `${entryName}.${format === 'es' ? 'mjs' : 'cjs'}`,
|
|
},
|
|
rollupOptions: {
|
|
external: ['vue', 'vue-demi', 'tailwindcss'],
|
|
output: {
|
|
globals: {
|
|
vue: 'Vue',
|
|
'vue-demi': 'VueDemi',
|
|
},
|
|
assetFileNames: '[name].[ext]',
|
|
},
|
|
},
|
|
cssCodeSplit: false,
|
|
sourcemap: true,
|
|
},
|
|
test: {
|
|
globals: true,
|
|
environment: 'jsdom',
|
|
include: ['src/**/*.{test,spec}.{js,ts}'],
|
|
exclude: ['src/**/*.visual.spec.ts'],
|
|
coverage: {
|
|
provider: 'v8',
|
|
reporter: ['text', 'json', 'json-summary', 'html'],
|
|
include: ['src/**/*.{ts,vue}'],
|
|
exclude: [
|
|
'src/**/*.d.ts',
|
|
'src/**/*.{test,spec}.ts',
|
|
'src/**/*.stories.ts',
|
|
'src/**/index.ts',
|
|
],
|
|
thresholds: {
|
|
100: true,
|
|
},
|
|
},
|
|
},
|
|
})
|