13vaults/contentlayer.config.js

49 lines
1.2 KiB
JavaScript

import { defineDocumentType, makeSource } from "contentlayer/source-files";
import remarkGfm from "remark-gfm";
const Monster = defineDocumentType(() => ({
name: "Npc",
filePathPattern: "monsters/*.yml",
contentType: "data",
fields: {
name: { type: "string", required: true },
system: { type: "json", required: true },
items: { type: "list", of: { type: "json" }, required: true },
},
computedFields: {
slug: {
type: "string",
resolve: (doc) => doc._raw.sourceFileName.replace(/\.yml$/, ""),
},
},
}));
const ClassItem = defineDocumentType(() => ({
name: "ClassItem",
filePathPattern: "classes/*.mdx",
contentType: "mdx",
fields: {
title: { type: "string", required: true },
source: { type: "string", required: true },
quote: { type: "string", required: true },
quote_source: { type: "string", required: true },
lead: { type: "string", required: true },
},
computedFields: {
slug: {
type: "string",
resolve: (doc) => doc._raw.sourceFileName.replace(/\.mdx$/, ""),
},
},
}));
const contentLayerConfig = makeSource({
contentDirPath: "vaults",
documentTypes: [ClassItem, Monster],
mdx: {
remarkPlugins: [remarkGfm],
},
});
export default contentLayerConfig;