ui/vite.config.ts
2025-07-31 11:54:06 +02:00

87 lines
1.9 KiB
TypeScript

/// <reference types="vitest/config" />
import { defineConfig } from "vite";
import path from "node:path";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
import { glob } from "glob";
import { fileURLToPath } from "node:url";
import { storybookTest } from "@storybook/addon-vitest/vitest-plugin";
// https://vite.dev/config/
const dirname =
typeof __dirname !== "undefined"
? __dirname
: path.dirname(fileURLToPath(import.meta.url));
export default defineConfig({
plugins: [react(), tailwindcss()],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
test: {
projects: [
{
extends: true,
plugins: [
// The plugin will run tests for the stories defined in your Storybook config
// See options at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon#storybooktest
storybookTest({
configDir: path.join(dirname, ".storybook"),
}),
],
test: {
name: "storybook",
browser: {
enabled: true,
headless: true,
provider: "playwright",
instances: [
{
browser: "chromium",
},
],
},
setupFiles: [".storybook/vitest.setup.ts"],
},
},
],
},
build: {
lib: {
entry: Object.fromEntries(
glob
.sync("src/**/*.{ts,tsx}", {
ignore: ["**/*.d.ts", "**/*.stories.*", "**/*.test.*"],
})
.map((file) => [
file.slice(4, file.length - path.extname(file).length),
path.resolve(__dirname, file),
]),
),
formats: ["es", "cjs"],
},
cssCodeSplit: false,
rollupOptions: {
external: [
"react",
"react-dom",
"react/jsx-runtime",
"clsx",
"tailwind-merge",
"class-variance-authority",
"@radix-ui/react-slot",
"lodash",
"lucide-react",
"date-fns",
"react-day-picker",
],
output: {
preserveModules: true,
preserveModulesRoot: "src",
},
},
sourcemap: true,
emptyOutDir: false,
},
});