aboutsummaryrefslogtreecommitdiff
path: root/contentlayer.config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'contentlayer.config.ts')
-rw-r--r--contentlayer.config.ts45
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,
+ ],
+ },
+})