Use cm6-graphql from CDN (#18552)

This commit is contained in:
fisker Cheung authored and GitHub committed 2025-12-31 00:01:20 +08:00
1 parent 8903d89377
commit 65e600a539
1 file changed
+19 -10
+19 -10
View File
@@ -9,10 +9,7 @@ import packageJson from "./package.json" with { type: "json" };
const IS_PRODUCTION = process.env.NODE_ENV === "production";
const IS_CI = Boolean(process.env.CI);
const OUT_DIRECTORY = "./static/playground/";
const DEPENDENCIES_EXCLUDE_FROM_CDN = new Set([
"cm6-graphql",
"@docusaurus/preset-classic",
]);
const DEPENDENCIES_EXCLUDE_FROM_CDN = new Set(["@docusaurus/preset-classic"]);
// Local develop requires `vue` for HMR
if (!IS_PRODUCTION) {
@@ -57,18 +54,27 @@ async function buildCdnAlias() {
async function getPackageCdnUrl(name) {
const version = packageJson.dependencies[name];
const url = new URL(`https://esm.sh/${name}@${version}`);
let deps = await getPackageDependencies(name, import.meta.url);
deps = deps
let dependencies = await getPackageDependencies(name, import.meta.url);
dependencies = dependencies
// Exclude self
.filter((dependency) => dependency.name !== name)
// Sort alphabetically
.toSorted(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB));
.toSorted(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB))
// Dedupe
.filter(
({ name, version }, index, dependencies) =>
dependencies.findIndex(
(searching) =>
searching.name === name && searching.version === version,
) === index,
);
if (deps.length > 0) {
if (dependencies.length > 0) {
url.searchParams.set(
"deps",
deps.map(({ name, version }) => `${name}@${version}`).join(","),
dependencies.map(({ name, version }) => `${name}@${version}`).join(","),
);
}
@@ -87,7 +93,10 @@ async function getPackageJson(name, base) {
async function getPackageDependenciesWithoutCache(name, base) {
const { url, packageJson } = await getPackageJson(name, base);
const dependencies = [{ name, version: packageJson.version }];
for (const name of Object.keys(packageJson.dependencies ?? {})) {
for (const name of Object.keys({
...packageJson.dependencies,
...packageJson.peerDependencies,
})) {
dependencies.push(...(await getPackageDependencies(name, url)));
}
return dependencies;