/** * 演示站打包:esbuild 从 TS 源码打包(alias 直连各包 src), * 连同 tokens.css / ui.css 内嵌进单文件 apps/demo/dist/demo.html。 */ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { createRequire } from 'node:module'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const root = path.resolve(__dirname, '..', '..'); // apps/demo 上两级 = 仓库根 // esbuild 装在托管 node workspace,用 createRequire 指过去 const require = createRequire('C:/Users/shawn/.workbuddy/binaries/node/workspace/index.js'); const esbuild = require('esbuild'); const read = (p) => fs.readFileSync(path.join(root, p), 'utf8'); const result = await esbuild.build({ entryPoints: [path.join(root, 'apps/demo/main.ts')], bundle: true, format: 'iife', target: 'es2020', charset: 'utf8', // 中文保留原文,不转义为 \uXXXX write: false, legalComments: 'none', alias: { '@ui-arch/frame': path.join(root, 'packages/core/frame/src/index.ts'), '@ui-arch/ui': path.join(root, 'packages/skin/ui/src/index.ts'), '@ui-arch/table-core': path.join(root, 'packages/core/table-core/src/index.ts'), }, }); const js = result.outputFiles[0].text.replace(/<\/script>/gi, '<\\/script>'); // 防提前闭合 const css = [read('packages/design/tokens/tokens.css'), read('packages/skin/ui/ui.css')].join('\n'); const html = `