diff options
| author | schererleander <leander@schererleander.de> | 2025-12-25 23:33:25 +0000 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-12-25 23:33:25 +0000 |
| commit | d82fb3b552d20a279efdd9408042183cfa02fb48 (patch) | |
| tree | 4ffe818e591e54da71f7592506c873abf0d9d481 /contentlayer.config.ts | |
| parent | d7edbf05ab0e90eedcb99e4462e3a61793b2eff9 (diff) | |
initial commit
Diffstat (limited to 'contentlayer.config.ts')
| -rw-r--r-- | contentlayer.config.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/contentlayer.config.ts b/contentlayer.config.ts new file mode 100644 index 0000000..0d85edf --- /dev/null +++ b/contentlayer.config.ts @@ -0,0 +1,45 @@ +// contentlayer.config.ts +import { defineDocumentType, makeSource } from 'contentlayer2/source-files' +import rehypePrettyCode from 'rehype-pretty-code' +import rehypeSlug from 'rehype-slug' +import rehypeAutolinkHeadings from 'rehype-autolink-headings' + +export const Post = defineDocumentType(() => ({ + name: 'Post', + filePathPattern: `**/*.mdx`, + contentType: 'mdx', + fields: { + title: { type: 'string', required: true }, + date: { type: 'date', required: true }, + }, + computedFields: { + url: { type: 'string', resolve: (post) => `/blog/${post._raw.flattenedPath}` }, + }, +})) + +const options = { + theme: 'vesper', + keepBackground: false, +} + +export default makeSource({ + contentDirPath: 'posts', + documentTypes: [Post], + disableImportAliasWarning: true, + mdx: { + rehypePlugins: [ + rehypeSlug, + [ + rehypeAutolinkHeadings, + { + behavior: 'append', + properties: { + className: ['anchor'], + }, + }, + ], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [rehypePrettyCode, options] as any, + ], + }, +}) |
