import { dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; /** * 仓库根与"按仓库相对路径取文件"的唯一入口。 * * 读样式表 / 脚本 / 文档的用例原先一律写 `resolve(process.cwd(), 'apps/ai-game-creator-shell/…')`: * 从仓库根跑(CI 的 `npm run test`、根 `vitest.config.ts`)没问题,但只要从 * `apps/ai-game-creator-shell` 目录跑一次,路径就会翻成 * `…/apps/ai-game-creator-shell/apps/ai-game-creator-shell/…` 并整片 ENOENT——看起来像"这些用例本来 * 就红",实际是路径解析跟着 cwd 漂。这里按 `import.meta.url` 反推仓库根,两种跑法结论一致。 */ export const REPO_ROOT = resolve( dirname(fileURLToPath(import.meta.url)), '..', '..', '..', ); /** 传仓库相对路径(如 `apps/ai-game-creator-shell/src/styles.css`)。 */ export function repoPath(...segments: readonly string[]): string { return resolve(REPO_ROOT, ...segments); }