Initial Commit
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Detect the appropriate vitest `environment` for a package.
|
||||
*
|
||||
* Order of precedence:
|
||||
* 1. Explicit override
|
||||
* 2. Package depends on `react` / `react-dom` → `happy-dom`
|
||||
* 3. Package depends on `jsdom` → `jsdom`
|
||||
* 4. Default: `node`
|
||||
*/
|
||||
|
||||
export type TestEnvironment = "node" | "happy-dom" | "jsdom";
|
||||
|
||||
interface MinimalPackageJson {
|
||||
dependencies?: Record<string, string>;
|
||||
devDependencies?: Record<string, string>;
|
||||
peerDependencies?: Record<string, string>;
|
||||
}
|
||||
|
||||
export function detectEnvironment(
|
||||
pkg: MinimalPackageJson,
|
||||
override?: TestEnvironment
|
||||
): TestEnvironment {
|
||||
if (override) return override;
|
||||
const deps = {
|
||||
...(pkg.dependencies ?? {}),
|
||||
...(pkg.devDependencies ?? {}),
|
||||
...(pkg.peerDependencies ?? {}),
|
||||
};
|
||||
if ("react" in deps || "react-dom" in deps) return "happy-dom";
|
||||
if ("jsdom" in deps) return "jsdom";
|
||||
return "node";
|
||||
}
|
||||
Reference in New Issue
Block a user