Files
cms-website/vitest.config.ts
T
浅念 dc4557cccf feat(adapter-wp): 包骨架与限额契约
Plan 2 Task 1:@sf/adapter-wp 包骨架(照 contracts 先例:build extends +
rootDir "." + exclude test)+ WxrLimits 十字段限额契约与 DEFAULT_WXR_LIMITS
值域冻结(设计基线 §7.2)+ 跨包接线。

跨包接线(一份 paths 三方消费):
- 根 tsconfig compilerOptions.paths 把 @sf/contracts、@sf/adapter-wp 映射到
  各自 src/index.ts;adapter tsconfig extends 根 tsconfig 使包级 tsc 读同一
  份 paths(extends 相对路径按声明处解析,映射始终落在仓库根)
- 根 vitest.config.ts resolve.alias 指向同一映射(vitest 不读 tsconfig paths)
- adapter 加 @sf/contracts workspace:* 依赖;三方均直连 src,不经 dist
  (已实测:移走 contracts dist 后 vitest 与包级 tsc 仍全绿)
- 根 devDependencies 加 @types/node@^22(对齐 apps/api 钉 22):alias 的
  fileURLToPath 辅助需 node 类型,此前根程序靠 apps/api 传递 @types 才有
  node 全局,属偶合

限额类型锁(照 contracts 单源派生先例):DEFAULT_WXR_LIMITS as const
satisfies WxrLimits + _LIMIT_KEYS 键集与 keyof WxrLimits 双向咬合断言;
timeBudgetMs 以可注入时钟(构造函数 now())测试于 Task 3、实测覆盖于 Task 8。

验证:pnpm test 78 绿(75+3);pnpm --filter @sf/adapter-wp exec tsc
-p tsconfig.json --noEmit exit 0(--listFiles 证实 contracts 经 src 解析);
根 typecheck 链与 pnpm lint 绿;build 产物形状核验后清理。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-21 08:05:08 +08:00

29 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vitest/config'
// 跨包源码直连(Plan 2 Task 1):与根 tsconfig compilerOptions.paths 保持同一映射——
// vitest 不读 tsconfig paths,须在此镜像一份;三方消费(包级 tsc / vitest / tsx)
// 均直连 src/index.ts,不经 dist、无需预构建。
const src = (p: string) => fileURLToPath(new URL(p, import.meta.url))
export default defineConfig({
resolve: {
alias: {
'@sf/contracts': src('packages/contracts/src/index.ts'),
'@sf/adapter-wp': src('packages/adapter-wordpress/src/index.ts'),
},
},
test: {
include: ['tests/**/*.test.ts', 'packages/*/test/**/*.test.ts', 'apps/*/test/**/*.test.ts'],
// 集成测试库供给(Task 13):setup 建 sf_test_<ts> 临时库并全量迁移,
// 设 DATABASE_URL_TEST 让所有 getDb() 自动指过去;teardown 负责 DROP。
globalSetup: ['tests/integration/global-setup.ts'],
testTimeout: 30000,
// 集成测试共库且清场会做全局态变更(不可变表 DISABLE/ENABLE TRIGGER 是库级 DDL,
// 对所有会话可见):文件级并行时 A 文件清场窗口会与 B 文件的不可变断言竞态(实测
// db.media 清场 disable content_revisions_immutable 期间,db.content 恰好断言该触发器
// → UPDATE 意外放行)。串行执行文件消除该竞态;套件仅数秒,并行无收益。
fileParallelism: false,
},
})