SuperAPI AI 工具集

platform-seams

前端与建站

查看项目

更新于 10-16 08:37

技能介绍

用途:这是一套构建期“平台接缝”机制,用 #platform/* 说明符把不同构建目标(浏览器、Tauri、Epicenter 宿主)下的实现叶分离开,调用点写裸说明符,由构建选择具体文件。适合新增或修改接缝、构建条件、类型检查叶的场景。

主要能力与要点:在 package.json 的 imports 字段为每个条件加 default 各映射一个文件,映射顺序即匹配顺序;调用处直接 import { auth } from '#platform/auth',不做平台分支;在 vite.config.ts 里激活条件,注意自定义 conditions 会替换 Vite 默认值,所以...defaultClientConditions 的展开是必需的,否则依赖解析会坏。Typecheck 需要为每个非浏览器条件配 tsconfig.<condition>.json 并设置 compilerOptions.customConditions,否则这些叶完全不被检查。

契约:types.ts 声明类型,每个叶用 export const x: Contract = ... 注解,不要用 satisfies(会泄露具体类型、破坏各叶形状一致)。

两个条件的区别(ADR-0190):tauri 表示该构建跑在 Tauri WebView 中,可调用原生命令;epicenter-host 表示由桌面 Epicenter 宿主提供该构建,可向宿主取凭据、部署选择或资源基址。存储不是接缝:每个构建打开自己的 store,宿主不持有应用数据(ADR-0226)。已删除叶不会让任何构建失败,解析会静默回落到 default,这是需要留意的隐患,可由测试读取声明与构建产物来发现。

限制与反模式:不要为存储、副本或数据库加 #platform/* 接缝;不要在接缝调用点做平台分支或运行时探测宿主;不要在叶上用 satisfies;不要从 #platform/* 导入仅 .tauri.ts 才有的符号(应直接在另一个 .tauri.ts 内导入);不要恢复 resolve.extensions 后缀或 tsconfig moduleSuffixes;不要漏掉 tsconfig.<condition>.json;不要用身份门控路由或应用外壳。