-
Notifications
You must be signed in to change notification settings - Fork 1.2k
dumi 2.0 TODOs #1157
Copy link
Copy link
Open
Labels
help wantedExtra attention is neededExtra attention is needed
Description
欢迎参与 dumi 2.0 的建设,这里是待办任务合集,持续更新中...
下方任务列表中带 ⭐️ 的为 first-time task,⭐️ 数量越多代表难度越高
做之前请先评论认领,避免冲突
详细功能规划参考 #1151
基础工程
- 分支清理、基础工程搭建 a0d3993
- 基础 CI ci: enable github ci & add basic cases #1164
路由系统
- 常规文档路由生成,默认识别
docs目录、支持用resolve.docDirs自定义,基于 Umi 层的工具函数 a9ed4df - 原子(组件、函数等)路由生成,默认识别
src、支持用resolve.atomDirs自定义,原子路由均有实体类型(atomType),默认值为component,所生成的路由在/components下- 支持配置时指定原子类型(例如
hook、util、function、block)4f26c08 - 支持多语言路由
- 支持转化 father 配置为
resolve.atomDirs的默认值
- 支持配置时指定原子类型(例如
- ⭐️⭐️ 对生成的路由路径做无害化处理(仅允许使用字母、数字、下划线、短横线),基于 https://github.com/umijs/dumi/blob/22eec1d664865de0659b98b90ce69bb9cc5c4246/src/utils.ts
- 默认 404 页面
- demo 独立访问路由
Markdown 编译
- 聚合式 webpack loader(根据参数返回不同内容)
- Markdown transformer(基于 unified)
- loader 持久缓存 @miracles1919 feat: add markdown transformer cache #1221
-
rehypeJsxifyjsx 输出 8509da2 -
rehypeDemo代码块 demo 及外部 demo 处理 22eec1d -
rehypeStrip移除无用的节点,例如\neafefa9 - ⭐️⭐️
rehypeIsolation基础样式隔离,参考 dumi v1 重写 @mortalYoung feat(transformer): support generate wrapper node #1165 - ⭐️⭐️⭐️
rehypeEmbed支持 Markdown 嵌入语法,参考 dumi v1 重写 @mortalYoung - ⭐️
rehypeImg相对路径图片引入,参考 dumi v1 重写 @wyy0512 - ⭐️⭐️⭐️
rehypeEnhancedTag内置组件替换渲染(例如 Table、SourceCode),参考 dumi v1 重写 - ⭐️⭐️⭐️
rehypeContainer增强语法,替代 1.x 的Alert,功能参考 Vitepress,实现上基于 remark-directive -
rehypeText提取所有文本节点用来生成搜索索引 -
rehypeLink站内链接均使用 Link 标签做 pushState 跳转(要支持链接到某个 md 文件的用法) feat: handle link in md #1258 @miracles1919
demo 编译
- dumi-demo-loader,作为
preLoader供注册技术栈在 babel-loader 前面处理 demo 代码,使用下方的transformCode将其包裹、转换为 React 组件 482c469 - 支持 techstack 注册
- 实现 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
- 主题 API
- ⭐️⭐️ useNavData 支持约定式二级导航(比如
/docs/a/b1/c和/docs/a/b2/c中的 b1 和 b2 就属于同一个二级导航) - ⭐️⭐️⭐️ useSiteSearch 支持把搜索计算逻辑放到 worker 做,避免站点文本匹配计算量太大的时候阻塞渲染
- ⭐️⭐️ useNavData 支持约定式二级导航(比如
- 内置组件(注意:均无需样式,最后统一加【有可能用 CSS-in-JS】,必须要样式的组件就用 CSS 简单写一下)
- 主题系统设计 @PeachScript [RFC] dumi 2.0 theme system #1180
- 加载器(项目级 > 包级 > 默认主题) @PeachScript b0e0e54
- 默认主题, @PeachScript
- layouts
- DocLayout
- tdk 渲染(用于 SEO)
- 中英文排版优化(计划基于 heti)
- 首页设计 + 实现 @PeachScript
- DocLayout
- builtins
-
Previewer, @PeachScript- ⭐️⭐️ 在 CodeSandbox 中打开 @wyy0512 feat: support code open in CodeSandbox #1250
- ⭐️⭐️ 在 CodePen 中打开
- ⭐️⭐️ 在 Stackblitz 中打开 @miracles1919 feat: support open in stackblitz #1271
-
SourceCode,参考 dumi v1 重写 -
API, @PeachScript
-
- slots(可局部覆盖的插槽)
- ⭐️ContentTabs 支持识别 Tab 上的子组件,渲染该 Tab 的 Action(最右侧)和 Extra(紧跟 Tab)区域
- ⭐️LangSwitch
- 支持不刷新页面切换语言(主要涉及到 context 链路上的状态更新)
- 支持两种语言以上的 Select 切换方式
- ⭐️⭐️ SearchResult
- 上下键选择结果时、如果遇到滚动区域外的元素,支持自动滚动到滚动视口内
- layouts
- 支持实体路由的 Tab 注册
自动 API
- 组件属性定义 parser
- 组件属性 UI 面板
- 生成原子资产(组件、函数)元数据
- 注册 Playground Tab
文档 & 脚手架
- 站点脚手架
- 组件研发脚手架(RC 阶段先手动集成 father 4)
- 主题研发脚手架
- RC 阶段文档
- 配置项
- 主题
- 快速上手
- 正式版文档
- 新的文档目录结构 [RFC] dumi 2.0 官网文档目录结构 #1248
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
help wantedExtra attention is neededExtra attention is needed
