site.json
FileThe site.json
file is used to configure various aspects of a MarkBind website.
Here is a typical site.json
file:
{
"baseUrl": "/myproduct",
"faviconPath": "myfavicon.png",
"titlePrefix": "FooBar Dev Docs",
"titleSuffix": "FooBar",
"style": {
"bootstrapTheme": "bootswatch-cerulean",
"codeTheme": "light",
"codeLineNumbers": true
},
"pages": [
{
"src": "index.md",
"title": "Hello World",
"layout": "normal",
"searchable": "no",
"externalScripts": [
"https://cdn.plot.ly/plotly-latest.min.js"
],
"frontmatter": {
"header": "header.md"
}
},
{
"glob": "topics/**/*.md",
"globExclude": ["topics/*/appendix/*.md"],
"layout": "subtopic"
}
],
"pagesExclude": ["subsite/**/*.md", "node_modules/*"],
"externalScripts": [
"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"
],
"deploy": {
"message": "Site Update.",
"repo": "https://github.com/myorg/myrepo.git",
"branch": "gh-pages"
},
"globalOverride": {
"footer": "my-footer.md"
},
"ignore": [
"_site/*",
"*.json",
"*.md",
".git/*",
".gitignore",
"node_modules/*"
],
"plugins" : [
"filterTags"
],
"pluginsContext" : {
"filterTags" : {
"tags": ["tag1", "tag2"]
}
},
"headingIndexingLevel": 4,
"intrasiteLinkValidation": {
"enabled": false
},
"plantumlCheck": true
}
baseUrl
The base URL relative to your domain. Default: ""
(empty).
If you are deploying the site to GitHub pages, the baseUrl
setting in the site.json
should be set to the "/<repositoryName>"
for the links in the deployed site to work correctly.
Example If you are using GitHub Pages to host your deployed website at repo myorg/myproduct
(i.e., the website is published at https://myorg.github.io/myproduct
), then your baseUrl
should be "/myproduct"
.
Note: baseUrl
does not support live preview as there is no use case for changing it in during markbind serve
.
faviconPath
The location of the favicon. Default: favicon.ico
.
If the favicon was recently changed, you may need to force-refresh the Browser to see the new image.
titlePrefix
The prefix for all page titles. The separator -
will be inserted by MarkBind.
titleSuffix
The suffix for all page titles. The separator -
will be inserted by MarkBind.
style
(Optional) The styling options to be applied to the site. This includes:
bootstrapTheme
(Optional) The theme for the generated site.
Uses the default Bootstrap theme if not specified. See User Guide: Themes for more details.
codeTheme
[Optional. Default: "dark"
]
The theme used for fenced code blocks. Accepts either "light"
or "dark"
.
codeLineNumbers
[Optional. Default: false
]
The global setting to display or hide line numbers for code blocks. Accepts either true
or false
.
pages
An array of pages to be rendered.
src/glob
src
can be used to specify a single file, or an array of files.docs/index.md
or [ 'docs/index.md', 'docs/userGuide.md' ]
glob
can be used alternatively to define a file pattern in the glob syntax, or an array of such file patterns.**/*.md
or [ '**/*.md', '**/index.md' ]
globExclude
: An array of file patterns to be excluded from rendering when using glob
, also defined in the glob syntax.title
: The page <title>
for the generated web page. Titles specified here take priority over titles specified in the frontmatter of individual pages.layout
: The layout to be used by the page. Default: default
.searchable
: Specifies that the page(s) should be excluded from searching. Default: yes
.externalScripts
: An array of external scripts to be referenced on the page. Scripts referenced will be run before the layout script.frontmatter
: Specifies properties to add to the frontmatter of a page or glob of pages. Overrides any existing properties if they have the same name, and overrides any frontmatter properties specified in globalOverride
.Page properties that are defined in site.json
for a particular page will override those defined in the frontmatter of the page. For example, if we declare a title
within the frontmatter of the page (say index.md
) like such:
<frontmatter>
title: Hello World
</frontmatter>
But the title
property in the corresponding site.json
is set as such:
{
"pages": [
{
"src": "index.md",
"title": "Landing Page",
}
],
}
Then, the title of index.md
will be set as "Landing Page" instead of "Hello World".
In this manner, setting the property title
in site.json
will always override the title
declared within the frontmatter of the page.
Note: If multiple src
(pages) or glob
(globs) attributes match a file, MarkBind will merge properties from all entries. If there are conflicting properties, pages are given priority over globs. If there are multiple matching glob entries, the last entry is given priority.
Example Multiple entries matching index.md
:
{
"pages": [
{
"src": "index.md",
"title": "Hello World",
"searchable": "no"
},
{
"glob": "*.md",
"layout": "normal",
"searchable": "yes"
}
],
}
The following properties will apply to index.md
:
{
"src": "index.md",
"title": "Hello World", // Inherited from page
"layout": "normal", // Inherited from glob
"searchable": "no", // Page takes priority over glob
}
pagesExclude
An array of file patterns to be excluded from rendering. The exclusion pattern follows the glob syntax.
This property is the global variant to the globExclude
property and is functionally identical to it. If the two are used at once, the file patterns from both properties will be combined when excluding pages.
externalScripts
An array of external scripts to be referenced on all pages. To reference an external script only on specific pages, externalScripts
should be specified in pages
instead. Scripts referenced will be run before the layout script.
globalOverride
Globally overrides properties in the frontmatter of all pages. Any property included in the global override will automatically be merged with the frontmatter of every single page, and override them if the property exists.
ignore
An array of file patterns to be ignored when copying files to the generated site. By default, MarkBind will copy all the files as assets of the generated site.
The ignore pattern follows the glob pattern used in .gitignore. For example, *.md
ignores all markdown source files.
deploy
The settings for auto-deployment to GitHub pages.
message
[Optional. Default: "Site Update."
]
The commit message used for the deployment commit.
repo
[Optional. Default: the current working project's repo]
The repo you want to deploy to.
Format: "https://github.com/<org|username>/<repo>.git"
("git@github.com:<org|username>/<repo>.git"
if you use SSH)
Example "https://github.com/myorg/myrepo.git"
branch
[Optional. Default: "gh-pages"
]
The branch that will be deployed to in the remote repo.
plugins
, pluginsContext
A list of plugins to load. Plugins are user-defined extensions that can add custom features to MarkBind. pluginsContext
contains settings to be applied to the loaded plugins. See User Guide: Using Plugins for more details.
The example above uses tags as an example of configuring plugin settings, refer to the filterTags
plugin for more details.
headingIndexingLevel
The level of headings to be indexed for searching. Default: 3
i.e., only headings of levels 1,2,3 will be indexed for searching.
enableSearch
Specifies that the website should use MarkBind's search functionality. Default: true
. See User Guide: Making the Site Searchable for more details.
timeZone
Time zone of the time stamp. Default: "UTC"
.
locale
Language by locale used for the time stamp. Default: "en-GB"
(English (United Kingdom)
).
The date format is thus: <Day>, <Date> <Month> <Year>, <24-hour Time> <Time Zone Code>
.
intrasiteLinkValidation
Toggle whether to validate intra-site links. By default, MarkBind will validate all intra-site links and alert you of any potentially invalid ones.
To disable this validation entirely, you may add the following to site.json
:
...
"intrasiteLinkValidation": {
"enabled": false
},
...
plantumlCheck
Toggle whether to display a warning about PlantUML's prerequisite. Only applicable for non-Windows users. By default, MarkBind will check if you have Graphviz installed when you are using PlantUML diagrams.
To disable this validation and the display of the warning, you may add the following to site.json
:
...
"plantumlCheck": false,
...