소스 검색

sdk: fix nested exports transformation in publish script

The publish script now recursively transforms export paths to handle nested export objects. This ensures all SDK entry points are correctly mapped to their compiled dist/ locations and type definitions when publishing to npm.
Dax Raad 1 개월 전
부모
커밋
3a416f6f33
1개의 변경된 파일15개의 추가작업 그리고 6개의 파일을 삭제
  1. 15 6
      packages/sdk/js/script/publish.ts

+ 15 - 6
packages/sdk/js/script/publish.ts

@@ -6,15 +6,24 @@ import { $ } from "bun"
 const dir = new URL("..", import.meta.url).pathname
 const dir = new URL("..", import.meta.url).pathname
 process.chdir(dir)
 process.chdir(dir)
 
 
-const pkg = await import("../package.json").then((m) => m.default)
+const pkg = (await import("../package.json").then((m) => m.default)) as {
+  exports: Record<string, string | object>
+}
 const original = JSON.parse(JSON.stringify(pkg))
 const original = JSON.parse(JSON.stringify(pkg))
-for (const [key, value] of Object.entries(pkg.exports)) {
-  const file = value.replace("./src/", "./dist/").replace(".ts", "")
-  pkg.exports[key] = {
-    import: file + ".js",
-    types: file + ".d.ts",
+function transformExports(exports: Record<string, string | object>) {
+  for (const [key, value] of Object.entries(exports)) {
+    if (typeof value === "object" && value !== null) {
+      transformExports(value as Record<string, string | object>)
+    } else if (typeof value === "string") {
+      const file = value.replace("./src/", "./dist/").replace(".ts", "")
+      exports[key] = {
+        import: file + ".js",
+        types: file + ".d.ts",
+      }
+    }
   }
   }
 }
 }
+transformExports(pkg.exports)
 await Bun.write("package.json", JSON.stringify(pkg, null, 2))
 await Bun.write("package.json", JSON.stringify(pkg, null, 2))
 await $`bun pm pack`
 await $`bun pm pack`
 await $`npm publish *.tgz --tag ${Script.channel} --access public`
 await $`npm publish *.tgz --tag ${Script.channel} --access public`