mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-18 19:30:27 +08:00
- Add twemoji as npm dependency instead of build download - Package build assets with a Vite plugin instead of scripts - Keep the eslint and prettier caches in one directory
113 lines
3.4 KiB
TypeScript
113 lines
3.4 KiB
TypeScript
import config from "config";
|
|
import path from "node:path";
|
|
import { defineConfig } from "vitest/config";
|
|
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
|
|
import { assets } from "./vite-plugin-assets";
|
|
|
|
export default defineConfig({
|
|
define: {
|
|
buildTimeConfig: JSON.stringify(config.util.toObject()),
|
|
},
|
|
test: {
|
|
environment: "jsdom",
|
|
include: ["tests/unit/**/*.test.ts"],
|
|
reporters: "verbose",
|
|
},
|
|
plugins: [
|
|
assets(),
|
|
svelte({
|
|
extensions: [".svelte", ".md"],
|
|
// Reference: https://github.com/sveltejs/vite-plugin-svelte/issues/270#issuecomment-1033190138
|
|
dynamicCompileOptions({ filename }) {
|
|
if (
|
|
path.basename(filename) === "Clipboard.svelte" ||
|
|
path.basename(filename) === "ExternalLink.svelte" ||
|
|
path.basename(filename) === "Icon.svelte"
|
|
) {
|
|
return { customElement: true };
|
|
}
|
|
},
|
|
compilerOptions: { dev: process.env.NODE_ENV !== "production" },
|
|
}),
|
|
{
|
|
name: "inject-config-loader",
|
|
transformIndexHtml() {
|
|
if (process.env.VITE_RUNTIME_CONFIG === "true") {
|
|
return [
|
|
{
|
|
tag: "script",
|
|
attrs: {
|
|
type: "text/javascript",
|
|
},
|
|
children: `
|
|
try {
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "/config.json", false);
|
|
xhr.send(null);
|
|
window.__CONFIG__ = JSON.parse(xhr.responseText);
|
|
} catch {
|
|
console.warn("Couldn't load config.json from the server, using built-in fallback config.");
|
|
}
|
|
`,
|
|
injectTo: "head-prepend",
|
|
},
|
|
];
|
|
}
|
|
},
|
|
},
|
|
],
|
|
optimizeDeps: {
|
|
include: [
|
|
"@wooorm/starry-night",
|
|
"@wooorm/starry-night/etc",
|
|
"@wooorm/starry-night/go.mod",
|
|
"@wooorm/starry-night/go.sum",
|
|
"@wooorm/starry-night/source.batchfile",
|
|
"@wooorm/starry-night/source.dockerfile",
|
|
"@wooorm/starry-night/source.dotenv",
|
|
"@wooorm/starry-night/source.editorconfig",
|
|
"@wooorm/starry-night/source.erlang",
|
|
"@wooorm/starry-night/source.git-revlist",
|
|
"@wooorm/starry-night/source.gitattributes",
|
|
"@wooorm/starry-night/source.gitconfig",
|
|
"@wooorm/starry-night/source.gitignore",
|
|
"@wooorm/starry-night/source.groovy.gradle",
|
|
"@wooorm/starry-night/source.haproxy-config",
|
|
"@wooorm/starry-night/source.ini.npmrc",
|
|
"@wooorm/starry-night/source.json",
|
|
"@wooorm/starry-night/source.nix",
|
|
"@wooorm/starry-night/source.sass",
|
|
"@wooorm/starry-night/source.solidity",
|
|
"@wooorm/starry-night/source.svelte",
|
|
"@wooorm/starry-night/source.toml",
|
|
"@wooorm/starry-night/source.tsx",
|
|
"@wooorm/starry-night/source.zig",
|
|
"@wooorm/starry-night/text.html.asciidoc",
|
|
"@wooorm/starry-night/text.html.django",
|
|
"@wooorm/starry-night/text.html.vue",
|
|
"@wooorm/starry-night/text.robots-txt",
|
|
"@wooorm/starry-night/text.zone_file",
|
|
],
|
|
},
|
|
server: {
|
|
host: "localhost",
|
|
port: 3000,
|
|
watch: {
|
|
// reference: https://stackoverflow.com/a/75238360
|
|
useFsEvents: false,
|
|
},
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@app": path.resolve("./src"),
|
|
"@public": path.resolve("./public"),
|
|
"@http-client": path.resolve("./http-client"),
|
|
"@tests": path.resolve("./tests"),
|
|
},
|
|
},
|
|
build: {
|
|
outDir: "build",
|
|
},
|
|
});
|