-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontentlayer.config.ts
35 lines (32 loc) · 1015 Bytes
/
contentlayer.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { defineDocumentType, makeSource } from '@contentlayer/source-files'
import { format } from 'date-fns';
/** @type {import('contentlayer/source-files').ComputedFields} */
const computedFields = {
slug: {
type: "string",
resolve: (doc) => `/doc/${doc._raw.flattenedPath}`,
},
slugAsParams: {
type: "string",
resolve: (doc) => doc._raw.flattenedPath.split("/").slice(1).join("/"),
},
shortDate: {
type: "string",
resolve: (doc) => format(new Date(doc.date), 'yyMMdd'),
}
}
export const Post = defineDocumentType(() => ({
name: 'Post',
filePathPattern: `**/*.mdx`,
contentType: 'mdx',
fields: {
title: { type: 'string', required: true },
date: { type: 'date', required: true },
description: { type: 'string', required: false },
},
computedFields,
// computedFields: {
// url: { type: 'string', resolve: (post) => `/posts/${post._raw.flattenedPath}` },
// },
}))
export default makeSource({ contentDirPath: 'content', documentTypes: [Post] })