@shwfed/config
v3.0.13
Published
Configurable UI for SHWFED
Readme
@shwfed/nuxt
阅读下面的资料以确保你理解这个项目
- Nuxt Directory Structure
- Nuxt Module Author Guide
- Google CEL
- Effect
- Reka UI
- shadcn
- VueUse
- shadcn-vue
- Vue
- Unovis
目录结构
参考 Nuxt Module 规范,暴露接口查看 module.ts。
Block 模式
- 宿主(如
table列、actions按钮)通过在<host>/<kind>/<compatibilityDate>/<type>/下放置包含schema.ts、config.vue、runtime.vue的文件夹来扩展。 - 区分字段为
type(列和按钮统一),版本通过compatibilityDate管理。 - 同目录下的
utils/resolve.ts使用 eagerimport.meta.glob构建注册表;若模块的type或compatibilityDate与文件夹名不匹配,模块加载时会抛错。 - 调用处保留领域命名——
Column、Button、findColumn、findButton、COLUMNS、BUTTONS。"Block" 仅作为该模式的名称。 - 新增时请严格照搬现有目录结构。
双轴测试
- Per-folder 测试(
schema.test.ts、config.test.ts、runtime.test.ts)与实现代码放在同一目录。- 直接
import ./schema和 SFC;通过vi.mock打桩#app、injectCELContext、以及宿主 UI 原子组件。 - 禁止触达
utils/resolve.ts——import.meta.glob和 Nuxt 不在测试范围内。 - 使用纯
vitest+@vue/test-utils。 - 由于 config/runtime SFC 会间接 import
actions/schema.ts(后者会 importutils/resolve),通常也需要vi.mock('../../../schema', …)切断这条依赖链。 #app在vitest.config.mjs中被 alias 到test/stubs/nuxt-app.ts;需要useNuxtApp时在单个测试中用vi.mock('#app', …)覆盖。
- 直接
- 集成测试位于
test/目录,使用@nuxt/test-utils搭配test/fixtures/<surface>/下的 fixture。每个宿主一个 fixture——不要把多个宿主塞进同一个大 fixture。 - 被要求为列/按钮加测试时,默认选 per-folder。只有测试宿主接线(配置翻译、贡献合并、端到端交互)时才使用
test/。
