作者:John Otander
注意:这是一篇旧的博客文章。 ZEIT 现在是 Vercel。 不再需要 "@mdx pragma"。 以下内容为历史目的而保留原样。
MDX 正式发布
距离第一次 MDX 提交已经一年半了,距离 MDX 在 ZEIT Day 上首次公布也一年了。 MDX 是对如何使用组件编写沉浸式内容的一次激进范式转变。 它是一种开放的、可创作的格式, 让写作再次变得有趣。
自从公布 MDX 以来,我们一直在进行大量的 bug 修复、新功能开发、 更好的解析和集成测试。 现在,我们认为它已经准备好了。 我们很高兴终于发布 v1!
🎉 有什么新内容?
以下是我们所做工作的简要概述:
解析
MDX 文档解析有了显著改进。 我们不会在这里深入细节,但我们看到了 MDX 在实际项目中的使用方式, 将遇到的边缘情况整合到测试套件中,现在更直观地处理 JSX、 import 和 export。 如果你发现我们没有覆盖的情况,请提交 issue!😸
remark-mdx
remark-mdx 是 remark 中 MDX 的语法扩展。 它作为 remark 插件提供 MDX 的解析功能。 这听起来有点元。 它的意思是,以前语法解析部分在库内部(无法从外部使用), 现在它被外部化了(可以从外部使用)。 如果你想检查或转换 MDX 文档,这很有用。 例如,它允许 prettier 等工具使用与 MDX 核心完全相同的解析器。 或者你可以将 remark-mdx 与 remark-lint 结合使用来检查你的 MDX。
自定义 pragma
在 v1 中,我们不再使用 MDXTag,而是使用包裹 React.createElement 的自定义 pragma。 我们决定更新这种方法,使 JSX 输出更易读、 更轻量、更可定制。 这意味着 MDX 可以与任何 React、Vue、Preact 或任何其他支持 JSX 的库一起使用。
特别感谢 @christopherbiscardi 实现了这个功能。
📚 文档
好的库需要好的文档,所以我们一直在添加内容并 改进整体文档网站体验。
- 搜索(感谢 Algolia)
- 指南
- 通过 ZEIT 自动部署
- 自定义 Gatsby 主题
- 文档重组以提高直觉性
- 全面重写页面以提高清晰度
特别感谢 @jxnblk 和 @wooorm 帮助改进文档和 更新构建工具。
破坏性变更
为了进行一些改进,我们不得不引入一些破坏性变更。 这些是实际生产测试和反馈的结果。 社区在发展,在过去一年中我们想出了更新、更好的主意。 我们确保影响很小,并编写了完整的迁移指南。
- 🚨
@mdx-js/tag被@mdx-js/react和@mdxpragma 取代 — 迁移指南 - MDXProvider 现在在嵌套时合并组件上下文 — 迁移指南
- React 支持现在要求
@mdx-js/react中>= 16.8— 迁移指南
废弃
我们只需要引入一个废弃。 mdPlugins 和 hastPlugins 选项分别被重命名为 remarkPlugins 和 rehypePlugins。 目前,当使用旧选项时会发出警告。 在 v2 中,旧选项将被移除。
📈 增长
每次主要发布都是退后一步反思增长和更大社区发展的好时机。 围绕 MDX 的生态系统已经增长到超出我们梦想的规模。 我们还看到了我们从未想象过的项目/产品/应用。
数据
- 下载量:每周 125,000 次,总计 240 万次
- Stars:6,200
- 贡献者:50
- Pull requests:281
- 提交:670
贡献者的增长是这里最重要的方面之一,因为我们有众多 熟悉 MDX 内部原理的社区成员。 这使我们能够持续改进项目,并在不断增长的贡献者团队中分担工作。
生态系统
🛣 路线图
v1 发布后,我们制定了一个路线图,除了 bug 修复和可能遇到的 解析问题外,我们将在接下来的 6 个月左右继续努力。
- MDXs:#454
- 交错:#195
- 全局 shortcodes:#508
- 稳定的 Vue 支持:#238
- Blocks:MDX WYSIWYG:blocks/blocks
- 受 AST Explorer 启发的 MDX playground:#220
- 新的启动页面:#444
- 展示页面:#414
Vue 支持
支持 Vue 是 MDX 的一个重要目标,也是我们重新架构 MDX 以使用 自定义 pragma 的主要原因之一。 我们很高兴我们现在有一个可用的 Vue alpha 版本。 我们希望 Vue 社区的任何人都能尝试一下并提供反馈。
Blocks 项目
编写 MDX 文档的一个关键缺失方面是编辑体验。 目前,除非你喜欢在文本编辑器中编写原始 Markdown/代码, 否则没有一种易于上手的方式来编写 MDX。 我们想解决这个问题,并已经开始开发一个 MDX "blocks 编辑器", 它是一个以内容为中心的 WYSIWYG。 不仅如此,我们将尽一切努力确保编辑器从一开始就尽可能地无障碍。
当我们准备好 beta 版本时,我们会将其开源并公布,敬请期待。
unified 集体
MDX 是 unified 集体的一部分,这是一个处理多种内容来源的 开源生态系统。 unified 项目在整个网络中被使用,如果没有我们优秀的赞助商的 财务支持,这一切都不可能实现。
🙏 致谢
我们要感谢所有的贡献者和开心的用户。 特别感谢 @wooorm, @silvenon, @timneutkens, @ChristopherBiscardi, @jxnblk, @alexandernanberg, @jescalan, @Jarred-Sumner, @leimonio, @ticky, @jamesknelson, @pshrmn, @rauchg, @joelhooks, @jlengstorf, @johnlindquist, @kyleamathews, @kentcdodds, @wesbos, @rosew, @pedronauck, @tayiorbeii, @nickbender, @ntaylor89, @mxstbr, @manovotny, @xyc, @filoxo, @millette, @hugmanrique, @johnsherrard, @sw-yx, 以及任何我们可能遗漏的人。