blob: ac6e5c6556c06a98f49a7e7503e8477acacf1fa8 (
plain) (
blame)
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
|
import type { AstroConfig } from 'astro';
import { fileURLToPath } from 'node:url';
import { crawlFrameworkPkgs } from 'vitefu';
export async function getSolidPkgsConfig(isBuild: boolean, astroConfig: AstroConfig) {
return await crawlFrameworkPkgs({
root: fileURLToPath(astroConfig.root),
isBuild,
viteUserConfig: astroConfig.vite,
isFrameworkPkgByJson(pkgJson) {
return containsSolidField(pkgJson.exports || {});
},
});
}
// Reference vite-plugin-solid heuristic
// https://github.com/solidjs/vite-plugin-solid/blob/5558486b0c63788e1275244256918f80294a8338/src/index.ts#L251-L259
// License: MIT (https://github.com/solidjs/vite-plugin-solid/blob/5558486b0c63788e1275244256918f80294a8338/package.json#L38)
function containsSolidField(fields: Record<string, any>) {
const keys = Object.keys(fields);
for (const key of keys) {
if (key === 'solid') return true;
if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key]))
return true;
}
return false;
}
|