Publication options
The following properties in the publication configuration option are used to provide information to Indiekit about a publication and how to interact with it.
NOTE
publication.me is required. All other properties are optional.
categories
A list of categories or tags used on your website. Can be an array of values, or a URL pointing to the location of a JSON file that provides an array of values.
Example, using an array:
{
"publication": {
"categories": ["sport", "technology", "travel"]
}
}export default {
publication: {
categories: ["sport", "technology", "travel"]
}
}Example, using a URL:
{
"publication": {
"categories": "https://website.example/categories.json"
}
}export default {
publication: {
categories: "https://website.example/categories.json"
}
}channels
A keyed collection of configuration properties for different channels, which can be used to organise posts within your publication. For example:
{
"publication": {
"channels": {
"posts": {
"name": "Posts"
},
"pages": {
"name": "Pages"
}
}
}
}export default {
publication: {
channels: {
posts: {
name: "Posts"
},
pages: {
name: "Pages"
}
}
}
}enrichPostData
A boolean to determine if data about URLs referenced in new posts is fetched and appended to a post’s properties.
Defaults to false.
When enabled, Indiekit will try to fetch Microformats data for any URL in a new post (for example URLs for bookmark-of, like-of, repost-of, in-reply-to).
If any data is found, a references property is included in the resulting post data. For example, given the following Micropub request:
POST /micropub HTTP/1.1
Host: indiekit.mywebsite.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer XXXXXXX
h=entry
&content=This+made+me+very+hungry.
&bookmark-of=https://website.example/notes/123should the note post at https://website.example/notes/123 include Microformats, the following post data would be generated:
{
date: "2022-11-03T22:00:00",
"bookmark-of": "https://website.example/notes/123",
content: "This made me very hungry.",
references: {
"https://website.example/notes/123": {
type: "entry",
published: "2013-03-07",
content: "I ate a cheese sandwich, which was nice.",
url: "https://website.example/notes/123"
}
}
}This referenced Microformats data could then be used in the design of your website to provide extra information about the content you are linking to.
locale
A ISO 639-1 language code representing the language used by the publication. Currently used to format dates.
Defaults to "en" (English).
me
Your website’s URL. Required.
mediaStore
A string representing the package name of a content store plugin to use for storing media files. If no value is provided, the default content store is used.
postTemplate
A post template is a function that takes post properties received and parsed by the Micropub endpoint and renders them in a given file format, for example, a Markdown file with YAML front matter.
Defaults to MF2 JSON.
See customising a post template →
postTypes
A keyed collection of configuration properties for different post types. For example:
{
"publication": {
"postTypes": {
"note": {
"name": "Journal entry",
"post": {
"path": "_journal/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "journal/{yyyy}/{MM}/{slug}"
}
},
"photo": {
"name": "Photograph",
"post": {
"path": "_photos/{yyyy}-{MM}-{dd}-{slug}.md",
"url": "photos/{yyyy}/{MM}/{slug}"
},
"media": {
"path": "media/photos/{yyyy}/{filename}"
}
}
}
}
}export default {
publication: {
postTypes: {
note: {
name: "Journal entry",
post: {
path: "_journal/{yyyy}-{MM}-{dd}-{slug}.md",
url: "journal/{yyyy}/{MM}/{slug}"
}
},
photo: {
name: "Photograph",
post: {
path: "_photos/{yyyy}-{MM}-{dd}-{slug}.md",
url: "photos/{yyyy}/{MM}/{slug}"
},
media: {
path: "media/photos/{yyyy}/{filename}"
}
}
}
}
}Some of these values may already be set by a preset plugin or any post type plugins, but you can overwrite any configuration values they have set.
See customising post types →
Properties
nameA string representing the name you use for this post type on your own site. You needn’t specify this value, but some Micropub clients use this value in their publishing interfaces.
hA string representing the Microformat vocabulary to use. Defaults to
entry.discoveryA string representing the field name to use when identifying incoming Micropub requests.
fieldsAn object containing FieldType objects, optionally with a
requiredproperty, and keyed by field name. For example:json{ "name": "Journal entry", "fields": { "content": { "required": true }, "categories": { "required": true }, "location": {} } }js{ name: "Journal entry", fields: { content: { required: true }, categories: { required: true }, location: {} } }postAn object containing options for how post files should be stored.
path- A string representing where posts should be saved in your content store.
url- A string representing a permalink (or URL path) format for posts on your website. Defaults to
pathif no value provided.
mediaAn object containing options for how media files should be stored.
path- A string representing where media files should be saved in your content store.
url- A string representing the public accessible URL for media files. Defaults to
pathif no value provided.
slugSeparator
A string representing the character used to replace spaces when creating a slug.
Defaults to "-" (hyphen).
store
A string representing the package name of a content store plugin. If no value is provided, the first store plug-in listed under plugins is used.
storeMessageTemplate
A function that can be used to customise messages used when saving files to content stores that save messages with each change, for example git repositories.
Defaults to [action] [postType] [fileType].