[suggestion] allow mdx processing without mdx-bundler
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 30/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- markdown, typescript
- 领域
- tooling
调研方向
从 makeSource 配置及其 mdx callback 开始,然后将当前的 mdx-bundler 集成与 issue 中链接的官方 MDX on demand 指南进行比较。完成标准是 contentlayer 能够接受所示的基于 compile 的设置,包括 remark 和 rehype 插件,同时返回编译后的代码和文件数据。
由索引模型根据 Issue 内容生成。
描述
mdx-bundler is pretty opinionated and i would like to be able to use a simpler setup closer to the official MDX on demand guide.
it would be cool if something like the following could work with contentlayer:
import { compile } from '@mdx-js/mdx'
import withToc from '@stefanprobst/rehype-extract-toc'
import type { RawDocumentData } from 'contentlayer/source-files'
import { defineDocumentType, makeSource } from 'contentlayer/source-files'
import withSlug from 'rehype-slug'
import withFrontmatter from 'remark-frontmatter'
import withGfm from 'remark-gfm'
import { VFile } from 'vfile'
import { matter } from 'vfile-matter'
import { getTranslations } from '@/app/i18n'
const Post = defineDocumentType(() => {
return {
name: 'Post',
description: 'Post',
filePathPattern: `posts/**/*.mdx`,
contentType: 'mdx',
fields: {
title: { description: 'Title', type: 'string', required: true },
locale: { description: 'Locale', type: 'enum', options: ['en', 'de'], required: true },
},
}
})
export default makeSource({
contentDirPath: 'content',
documentTypes: [Post],
async mdx(raw: string, sourceFilePath?: string) {
const input = new VFile({ value: raw, path: sourceFilePath })
matter(input)
const { locale } = input.data['matter']
const t = await getTranslations(locale)
const vfile = await compile(input, {
remarkPlugins: [withFrontmatter, withGfm],
remarkRehypeOptions: {
footnoteBackLabel: t('footnote-back-label'),
footnoteLabel: t('footnote-label'),
},
rehypePlugins: [withSlug, withToc],
})
return { code: String(vfile), data: vfile.data }
},
})
- 主要语言
- TypeScript
- 星标
- 3.5k
- 派生
- 192
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
contentlayerdev/contentlayer 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 25/100
contentlayerdev/contentlayer#506 · 84 条评论 · 47 个 reaction ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path 未关闭help wanted meta: never-stale needs-research
难度 4/5 3-5 天 新手友好度 38/100
contentlayerdev/contentlayer#464 · 4 条评论 · 9 个 reaction ·
-
meta: never-stale
难度 5/5 一周以上 新手友好度 10/100
contentlayerdev/contentlayer#429 · 49 条评论 · 83 个 reaction ·
-
meta: never-stale topic: markdown/mdx
难度 4/5 3-5 天 新手友好度 42/100
contentlayerdev/contentlayer#421 · 4 个 reaction ·
-
meta: never-stale needs-research topic: schema
难度 5/5 一周以上 新手友好度 25/100
contentlayerdev/contentlayer#420 ·
查看 contentlayerdev/contentlayer 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 2/5 1-3 小时 新手友好度 75/100
mksglu/context-mode#1200 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
难度 2/5 1-3 小时 新手友好度 75/100
anthropics/claude-code#96687 ·
-
good first issue
难度 1/5 1 小时以内 新手友好度 95/100
AOSSIE-Org/DebateAI#582 · 2 条评论 ·