-
Notifications
You must be signed in to change notification settings - Fork 90
Expand file tree
/
Copy pathvitest.config.ts
More file actions
58 lines (50 loc) · 1.62 KB
/
Copy pathvitest.config.ts
File metadata and controls
58 lines (50 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { createRequire } from "node:module";
import path from "node:path";
import { createVitestConfig } from "@lynx-js/react/testing-library/vitest-config";
import { defineConfig, mergeConfig } from "vitest/config";
const defaultConfig = await createVitestConfig();
const require = createRequire(import.meta.url);
const aliases = defaultConfig.test?.alias;
if (!Array.isArray(aliases)) {
throw new Error("Expected ReactLynx Vitest aliases to be an array.");
}
const runtimePreactPackageAlias = aliases.find(
(alias) =>
alias.find instanceof RegExp && alias.find.source === String.raw`^preact\/package.json$`,
);
if (!runtimePreactPackageAlias) {
throw new Error("Expected ReactLynx Vitest config to include a Preact package alias.");
}
const runtimePreactDirectory = path.dirname(runtimePreactPackageAlias.replacement);
const internalPreactDirectory = path.dirname(require.resolve("preact/package.json"));
defaultConfig.test = {
...defaultConfig.test,
alias: aliases.map((alias) =>
alias.find instanceof RegExp && alias.find.source.startsWith("^preact")
? {
...alias,
replacement: alias.replacement.replace(runtimePreactDirectory, internalPreactDirectory),
}
: alias,
),
};
export default mergeConfig(
defaultConfig,
defineConfig({
test: {
include: ["src/**/*.test.{ts,tsx}"],
},
optimizeDeps: {
exclude: [
"@lynx-js/react",
"@lynx-js/react/testing-library",
"preact",
"preact/hooks",
"preact/compat",
],
},
ssr: {
noExternal: ["@lynx-js/react", "preact", "@lynx-js/internal-preact"],
},
}),
);