Files
MattrixwvReactComponents/vite.config.ts

93 lines
2.1 KiB
TypeScript

/// <reference types="vitest/config" />
import tailwindcss from "@tailwindcss/vite";
import { tanstackRouter } from "@tanstack/router-plugin/vite";
import react from "@vitejs/plugin-react";
import { resolve } from "node:path";
import removeTestIdAttribute from "rollup-plugin-jsx-remove-attributes";
import { defineConfig } from "vite";
import dts from "vite-plugin-dts";
import { viteStaticCopy } from "vite-plugin-static-copy";
import { peerDependencies } from "./package.json";
const modules = [ "button", "input", "loading", "message", "modal", "nav", "progress", "tab", "toaster" ];
// https://vite.dev/config/
export default defineConfig({
plugins: [
tanstackRouter({
target: "react",
autoCodeSplitting: true
}),
react(),
tailwindcss(),
dts({
include: ["lib"],
tsconfigPath: "./tsconfig.lib.json",
rollupTypes: true,
insertTypesEntry: true,
compilerOptions: {
declarationMap: false
}
}),
removeTestIdAttribute({ usage: "vite" }),
viteStaticCopy({
targets: [
{
src: resolve(__dirname, "lib/styles.css"),
dest: ""
}
]
})
],
resolve: {
alias: {
"@": resolve(__dirname, "src"),
"$": resolve(__dirname, "lib"),
"#root": resolve(__dirname)
}
},
build: {
lib: {
entry: {
index: resolve(__dirname, "lib/index.ts"),
...Object.fromEntries(modules.map(mod => [mod, resolve(__dirname, `lib/component/${mod}/index.ts`)]))
},
formats: [ "es" ],
name: "Mattrixwv Component Library"
},
rollupOptions: {
external: [
"react",
"react-dom",
"react/jsx-runtime",
...Object.keys(peerDependencies).map(dep => dep.toString())
],
output: {
globals: {
react: "React",
"react-dom": "ReactDOM"
},
hoistTransitiveImports: false,
manualChunks: undefined,
entryFileNames: "[name].js",
chunkFileNames: "_internal/[name]-[hash].js"
},
treeshake: {
moduleSideEffects: false
}
}
},
publicDir: false,
test: {
globals: true,
environment: "jsdom",
setupFiles: [ "test/vitest.setup.ts" ],
coverage: {
provider: "v8",
reporter: [ "html", "text", "lcov" ]
}
}
});