mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-16 03:40:37 +08:00
Instead of hardcoding the manualChunks this allows us to reduce chunk size of index, and make it more flexible for new dependencies.
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import path from "node:path";
|
|
import { defineConfig } from "vite";
|
|
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
|
|
export default defineConfig({
|
|
test: {
|
|
environment: "happy-dom",
|
|
include: ["tests/unit/**/*.test.ts"],
|
|
reporters: "verbose",
|
|
},
|
|
plugins: [
|
|
svelte({
|
|
// Reference: https://github.com/sveltejs/vite-plugin-svelte/issues/270#issuecomment-1033190138
|
|
dynamicCompileOptions({ filename }) {
|
|
if (
|
|
path.basename(filename) === "Clipboard.svelte" ||
|
|
path.basename(filename) === "IconSmall.svelte"
|
|
) {
|
|
return { customElement: true };
|
|
}
|
|
},
|
|
compilerOptions: { dev: process.env.NODE_ENV !== "production" },
|
|
}),
|
|
],
|
|
server: {
|
|
host: "localhost",
|
|
port: 3000,
|
|
watch: {
|
|
// reference: https://stackoverflow.com/a/75238360
|
|
useFsEvents: false,
|
|
},
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@app": path.resolve("./src"),
|
|
"@public": path.resolve("./public"),
|
|
"@httpd-client": path.resolve("./httpd-client"),
|
|
"@tests": path.resolve("./tests"),
|
|
},
|
|
},
|
|
build: {
|
|
outDir: "build",
|
|
rollupOptions: {
|
|
output: {
|
|
manualChunks: id => {
|
|
if (id.includes("lodash")) {
|
|
return "lodash";
|
|
} else if (id.includes("katex")) {
|
|
return "katex";
|
|
} else if (id.includes("node_modules")) {
|
|
return "vendor";
|
|
} else if (id.includes("components")) {
|
|
return "components";
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
define: {
|
|
VITEST: process.env.VITEST !== undefined,
|
|
PLAYWRIGHT: process.env.PLAYWRIGHT_TEST_BASE_URL !== undefined,
|
|
},
|
|
});
|