Skip to content

Fields of type reference should be able to embed their data #86

@seancdavis

Description

@seancdavis

Given the following config:

const Category = defineDocumentType(() => ({
  name: 'Category',
  filePathPattern: 'categories/*.md',
  bodyType: 'none',
  fields: {
    title: { type: 'string', required: true },
  },
}))

const Doc = defineDocumentType(() => ({
  name: 'Doc',
  filePathPattern: '**/*.mdx',
  bodyType: 'mdx',
  fields: {
    title: { type: 'string', required: true },
    category: { type: 'reference', of: Category }
  },
}))

export default makeSource({
  contentDirPath: 'content',
  documentTypes: [Doc, Category],
})

And the following content files:

content/categories/a.md

---
title: My First Category
---

content/docs/index.mdx

---
title: Home Page
category: categories/a.md
---

The output document would have the following:

{
  "title": "Home Page",
  "category": "categories/a.md",
  // ...
}

It would be nice to (optionally) embed the category data directly in the output document. Otherwise, I have to defer that logic to my application. Being that it's data manipulation, it seems right that Contentlayer would handle this.

I'd rather see the output like this:

{
  "title": "Home Page",
  "category": {
    "title": "My First Category"
  },
  // ...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions