diff --git a/README.md b/README.md
index 4655a74..2bec422 100644
--- a/README.md
+++ b/README.md
@@ -119,8 +119,8 @@ Drop `
+
```
diff --git a/README.zh-Hans.md b/README.zh-Hans.md
index fd5d81b..a90c694 100644
--- a/README.zh-Hans.md
+++ b/README.zh-Hans.md
@@ -119,8 +119,8 @@ import "echarts";
```html
-
+
```
diff --git a/package.json b/package.json
index 12499bd..9b138a1 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"dev:build": "vite build",
"dev:preview": "vite preview",
"dev:typecheck": "vue-tsc -p ./demo",
- "docs": "node ./scripts/docs.js",
+ "docs": "jiti ./scripts/docs.ts",
"prepublishOnly": "pnpm run typecheck && pnpm run dev:typecheck && pnpm run build && publint"
},
"packageManager": "pnpm@10.14.0",
diff --git a/scripts/docs.js b/scripts/docs.ts
similarity index 73%
rename from scripts/docs.js
rename to scripts/docs.ts
index 7603e97..5e6dee9 100644
--- a/scripts/docs.js
+++ b/scripts/docs.ts
@@ -1,13 +1,21 @@
import { readFileSync, writeFileSync } from "node:fs";
import { commentMark } from "comment-mark";
-import { getPackageMeta, resolvePath, getVersions } from "./utils.js";
+import { getPackageVersions, resolvePath } from "./utils";
-const { name, version, devDependencies } = getPackageMeta();
+const { name, version, devDependencies } = getPackageVersions([
+ "echarts",
+ "vue",
+]);
const CDN_PREFIX = "https://cdn.jsdelivr.net/npm/";
const DEP_VERSIONS = {
- ...getVersions(["vue", "echarts"], devDependencies),
+ ...Object.fromEntries(
+ Object.entries(devDependencies).map(([name, { version }]) => [
+ name,
+ version,
+ ]),
+ ),
[name]: version,
};
@@ -20,7 +28,7 @@ function getScripts() {
.join("\n");
}
-function getCodeBlock(code) {
+function getCodeBlock(code: string) {
return "\n```html\n" + code + "\n```\n";
}
diff --git a/scripts/utils.js b/scripts/utils.js
deleted file mode 100644
index 0be70e9..0000000
--- a/scripts/utils.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import { readFileSync } from "node:fs";
-import { resolve, dirname } from "node:path";
-import { fileURLToPath } from "node:url";
-
-export function resolvePath(url, ...parts) {
- return resolve(dirname(fileURLToPath(url)), ...parts);
-}
-
-export function getPackageMeta() {
- return JSON.parse(
- readFileSync(resolvePath(import.meta.url, "../package.json"), "utf8"),
- );
-}
-
-/**
- * Get package versions from version record object (like dependencies or devDependencies)
- * @param {string|string[]} packageNames - Package name or array of package names
- * @param {Object} versionRecord - Version record object (e.g., dependencies, devDependencies)
- * @returns {Object|string} - Returns version string for single package, or {packageName: version} object for array
- */
-export function getVersions(packageNames, versionRecord) {
- if (!versionRecord || typeof versionRecord !== "object") {
- return null;
- }
-
- // Helper function to extract clean version number
- const extractVersion = (versionString) => {
- if (!versionString) return null;
- // Remove prefixes like ^, ~, >=, etc. and return clean version
- return versionString.replace(/^[\^~>=<]+/, "");
- };
-
- // If single string, return single version
- if (typeof packageNames === "string") {
- const version = extractVersion(versionRecord[packageNames]);
- return version || null;
- }
-
- // If array, return object with package names as keys
- if (Array.isArray(packageNames)) {
- const result = {};
- for (const pkg of packageNames) {
- const version = extractVersion(versionRecord[pkg]);
- if (version) {
- result[pkg] = version;
- }
- }
- return result;
- }
-
- return null;
-}
diff --git a/scripts/utils.ts b/scripts/utils.ts
new file mode 100644
index 0000000..d098097
--- /dev/null
+++ b/scripts/utils.ts
@@ -0,0 +1,20 @@
+import { execSync } from "node:child_process";
+import { resolve, dirname } from "node:path";
+import { fileURLToPath } from "node:url";
+
+export function resolvePath(url: string, ...parts: string[]) {
+ return resolve(dirname(fileURLToPath(url)), ...parts);
+}
+
+type PackageVersions = {
+ name: string;
+ version: string;
+ devDependencies: Record;
+};
+
+export function getPackageVersions(devDeps?: string[]): PackageVersions {
+ const stdOut = execSync(`pnpm ls ${devDeps?.join(" ") || ""} --json`, {
+ encoding: "utf-8",
+ });
+ return JSON.parse(stdOut)[0];
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
index 695006f..76b9563 100644
--- a/tsconfig.node.json
+++ b/tsconfig.node.json
@@ -1,5 +1,5 @@
{
- "include": ["*.config.*"],
+ "include": ["*.config.*", "scripts/**/*"],
"compilerOptions": {
"composite": true,
"lib": ["ESNext"],