[suggestion] allow mdx processing without mdx-bundler
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- markdown, typescript
- Área
- tooling
Línea de trabajo
Comienza con la configuración de makeSource y su callback mdx; después, compara la integración actual de mdx-bundler con la guía oficial de MDX on demand enlazada en el issue. Se considera terminado cuando contentlayer puede aceptar la configuración basada en compile que se muestra, incluidos los plugins de remark y rehype, y devolver el código compilado y los datos del archivo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 }
},
})
- Lenguaje dominante
- TypeScript
- Estrellas
- 3.5k
- Forks
- 192
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de contentlayerdev/contentlayer
-
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
contentlayerdev/contentlayer#506 · 84 comentarios · 47 reacciones ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Abiertohelp wanted meta: never-stale needs-research
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
contentlayerdev/contentlayer#464 · 4 comentarios · 9 reacciones ·
-
State of the project Abiertometa: never-stale
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
contentlayerdev/contentlayer#429 · 49 comentarios · 83 reacciones ·
-
meta: never-stale topic: markdown/mdx
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
contentlayerdev/contentlayer#421 · 4 reacciones ·
-
meta: never-stale needs-research topic: schema
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
contentlayerdev/contentlayer#420 ·
Todos los issues de contentlayerdev/contentlayer
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100