-
Notifications
You must be signed in to change notification settings - Fork 71
/
contentlayer.config.ts
120 lines (115 loc) Β· 2.34 KB
/
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import {
defineDocumentType,
defineNestedType,
makeSource
} from "contentlayer/source-files";
const Author = defineNestedType(() => ({
name: "Author",
fields: {
name: {
type: "string",
description: "The name of the author"
},
avatar: {
type: "string",
description: "The picture of the author"
}
}
}));
const Date = defineNestedType(() => ({
name: "Date",
fields: {
createdAt: {
type: "string",
description: "The date of creation"
},
updatedAt: {
type: "string",
description: "The date of last update"
}
}
}));
const Post = defineDocumentType(() => ({
name: "Post",
filePathPattern: `posts/**/*.mdx`,
contentType: "mdx",
fields: {
title: {
type: "string",
description: "The title of the post",
required: true
},
excerpt: {
type: "string",
description: "The excerpt of the post",
required: true
},
author: {
type: "nested",
of: Author,
description: "The author of the post",
required: true
},
date: {
type: "nested",
of: Date,
description: "The date of the post",
required: true
},
coverImage: {
type: "string",
description: "The cover image of the post",
required: true
},
highlighted: {
type: "string",
default: "false",
description: "If the post is highlighted"
}
},
computedFields: {
url: {
type: "string",
resolve: (doc) => `/blog/${doc._raw.flattenedPath}`
}
}
}));
const Logs = defineDocumentType(() => ({
name: "Log",
filePathPattern: `logs/**/*.mdx`,
contentType: "mdx",
fields: {
title: {
type: "string",
description: "The title of the log",
required: true
},
excerpt: {
type: "string",
description: "The excerpt of the log",
required: true
},
author: {
type: "nested",
of: Author,
description: "The author of the log",
required: true
},
date: {
type: "nested",
of: Date,
description: "The date of the log",
required: true
}
},
computedFields: {
url: {
type: "string",
resolve: (doc) => `/pro/changelog/${doc._raw.flattenedPath}`
}
}
}));
export default makeSource({
contentDirPath: "content",
documentTypes: [Post, Logs]
});