Skip to content

dumi 2.0 TODOs #1157

@PeachScript

Description

@PeachScript

欢迎参与 dumi 2.0 的建设,这里是待办任务合集,持续更新中...
下方任务列表中带 ⭐️ 的为 first-time task,⭐️ 数量越多代表难度越高
做之前请先评论认领,避免冲突

详细功能规划参考 #1151

dumi_2 0_v1

基础工程

路由系统

  • 常规文档路由生成,默认识别 docs 目录、支持用 resolve.docDirs 自定义,基于 Umi 层的工具函数 a9ed4df
  • 原子(组件、函数等)路由生成,默认识别 src、支持用 resolve.atomDirs 自定义,原子路由均有实体类型(atomType),默认值为 component,所生成的路由在 /components
    • 支持配置时指定原子类型(例如 hookutilfunctionblock4f26c08
    • 支持多语言路由
    • 支持转化 father 配置为 resolve.atomDirs 的默认值
  • ⭐️⭐️ 对生成的路由路径做无害化处理(仅允许使用字母、数字、下划线、短横线),基于 https://github.com/umijs/dumi/blob/22eec1d664865de0659b98b90ce69bb9cc5c4246/src/utils.ts
  • 默认 404 页面
  • demo 独立访问路由

Markdown 编译

demo 编译

  • dumi-demo-loader,作为 preLoader 供注册技术栈在 babel-loader 前面处理 demo 代码,使用下方的 transformCode 将其包裹、转换为 React 组件 482c469
  • 支持 techstack 注册
    • isSupported 启用条件 51a3a3e
    • transformCode 转换 demo 代码
      • code block demo 转换 51a3a3e
      • external demo 转换(由 dumi-demo-loader 调用)482c469
    • generateAssetsMeta 定制 demo 元数据(源代码、依赖等,通常让 dumi 内置处理即可) 6d5822b
    • generatePreviewerProps 定制 demo 渲染器的属性
  • 实现 React 技术栈 3a6791d
  • 实现 Vue 技术栈(基于 vue-loader) @xierenyuan
    • external demo 支持
    • code block demo 支持
  • 默认 demo 元数据生成器(源代码 + 依赖,基于 esbuild),dumi v1 用的 babel,流程可以参考但代码没有意义 6d5822b
    • 支持读取 md 的 atomId(组件 ID) + 额外的元数据 meta
  • 支持被动渲染模式(即 dumi 1.x 的 passive 模式)
  • 自动 alias 映射包名到 src

主题系统

  • ⭐️ 让 import from 'dumi' 拥有类型,导出 theme-api 的类型定义
  • 全局 Context
    • demos 采集 8381c00
    • demos 元数据采集,包含每个 demo 的源代码、依赖、描述等 6d5822b
    • 导航栏数据生成
    • 侧边菜单数据生成
    • toc 数据生成(支持 embed 和 demo 标题)
    • 结合多语言配置实现国际化文案支持
  • 主题 API
    • ⭐️⭐️ useNavData 支持约定式二级导航(比如 /docs/a/b1/c/docs/a/b2/c 中的 b1 和 b2 就属于同一个二级导航)
    • ⭐️⭐️⭐️ useSiteSearch 支持把搜索计算逻辑放到 worker 做,避免站点文本匹配计算量太大的时候阻塞渲染
  • 内置组件(注意:均无需样式,最后统一加【有可能用 CSS-in-JS】,必须要样式的组件就用 CSS 简单写一下
  • 主题系统设计 @PeachScript [RFC] dumi 2.0 theme system #1180
  • 加载器(项目级 > 包级 > 默认主题) @PeachScript b0e0e54
  • 默认主题, @PeachScript
  • 支持实体路由的 Tab 注册

自动 API

  • 组件属性定义 parser
  • 组件属性 UI 面板
  • 生成原子资产(组件、函数)元数据
  • 注册 Playground Tab

文档 & 脚手架

  • 站点脚手架
  • 组件研发脚手架(RC 阶段先手动集成 father 4)
  • 主题研发脚手架
  • RC 阶段文档
    • 配置项
    • 主题
    • 快速上手
  • 正式版文档

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions