# Configuration You can configure Docsify by defining `window.$docsify` as an object: ```html ``` The config can also be defined as a function, in which case the first argument is the Docsify `vm` instance. The function should return a config object. This can be useful for referencing `vm` in places like the markdown configuration: ```html ``` ## el - Type: `String` - Default: `#app` The DOM element to be mounted on initialization. It can be a CSS selector string or an actual [HTMLElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement). ```js window.$docsify = { el: '#app', }; ``` ## repo - Type: `String` - Default: `null` Configure the repository url, or a string of `username/repo`, to add the [GitHub Corner](http://tholman.com/github-corners/) widget in the top right corner of the site. ```js window.$docsify = { repo: 'docsifyjs/docsify', // or repo: 'https://github.com/docsifyjs/docsify/', }; ``` ## maxLevel - Type: `Number` - Default: `6` Maximum Table of content level. ```js window.$docsify = { maxLevel: 4, }; ``` ## loadNavbar - Type: `Boolean|String` - Default: `false` Loads navbar from the Markdown file `_navbar.md` if **true**, else loads it from the path specified. ```js window.$docsify = { // load from _navbar.md loadNavbar: true, // load from nav.md loadNavbar: 'nav.md', }; ``` ## loadSidebar - Type: `Boolean|String` - Default: `false` Loads sidebar from the Markdown file `_sidebar.md` if **true**, else loads it from the path specified. ```js window.$docsify = { // load from _sidebar.md loadSidebar: true, // load from summary.md loadSidebar: 'summary.md', }; ``` ## hideSidebar - Type : `Boolean` - Default: `true` This option will completely hide your sidebar and won't render any content on the side. ```js window.$docsify = { hideSidebar: true, }; ``` ## subMaxLevel - Type: `Number` - Default: `0` Add table of contents (TOC) in custom sidebar. ```js window.$docsify = { subMaxLevel: 2, }; ``` ## auto2top - Type: `Boolean` - Default: `false` Scrolls to the top of the screen when the route is changed. ```js window.$docsify = { auto2top: true, }; ``` ## homepage - Type: `String` - Default: `README.md` `README.md` in your docs folder will be treated as the homepage for your website, but sometimes you may need to serve another file as your homepage. ```js window.$docsify = { // Change to /home.md homepage: 'home.md', // Or use the readme in your repo homepage: 'https://raw.githubusercontent.com/docsifyjs/docsify/master/README.md', }; ``` If you have a link to the homepage in the sidebar and want it to be shown as active when accessing the root url, make sure to update your sidebar accordingly: ```markdown - Sidebar - [Home](/) - [Another page](another.md) ``` For more details, see [#1131](https://github.com/docsifyjs/docsify/issues/1131). ## basePath - Type: `String` Base path of the website. You can set it to another directory or another domain name. ```js window.$docsify = { basePath: '/path/', // Load the files from another site basePath: 'https://docsify.js.org/', // Even can load files from other repo basePath: 'https://raw.githubusercontent.com/ryanmcdermott/clean-code-javascript/master/', }; ``` ## relativePath - Type: `Boolean` - Default: `false` If **true**, links are relative to the current context. For example, the directory structure is as follows: ```text . └── docs ├── README.md ├── guide.md └── zh-cn ├── README.md ├── guide.md └── config └── example.md ``` With relative path **enabled** and current URL `http://domain.com/zh-cn/README`, given links will resolve to: ```text guide.md => http://domain.com/zh-cn/guide config/example.md => http://domain.com/zh-cn/config/example ../README.md => http://domain.com/README /README.md => http://domain.com/README ``` ```js window.$docsify = { // Relative path enabled relativePath: true, // Relative path disabled (default value) relativePath: false, }; ``` ## coverpage - Type: `Boolean|String|String[]|Object` - Default: `false` Activate the [cover feature](cover.md). If true, it will load from `_coverpage.md`. ```js window.$docsify = { coverpage: true, // Custom file name coverpage: 'cover.md', // multiple covers coverpage: ['/', '/zh-cn/'], // multiple covers and custom file name coverpage: { '/': 'cover.md', '/zh-cn/': 'cover.md', }, }; ``` ## logo - Type: `String` Website logo as it appears in the sidebar. You can resize it using CSS. ```js window.$docsify = { logo: '/_media/icon.svg', }; ``` ## name - Type: `String` Website name as it appears in the sidebar. ```js window.$docsify = { name: 'docsify', }; ``` The name field can also contain custom HTML for easier customization: ```js window.$docsify = { name: 'docsify', }; ``` ## nameLink - Type: `String` - Default: `window.location.pathname` The URL that the website `name` links to. ```js window.$docsify = { nameLink: '/', // For each route nameLink: { '/zh-cn/': '#/zh-cn/', '/': '#/', }, }; ``` ## markdown - Type: `Function` See [Markdown configuration](markdown.md). ```js window.$docsify = { // object markdown: { smartypants: true, renderer: { link: function() { // ... }, }, }, // function markdown: function(marked, renderer) { // ... return marked; }, }; ``` ## themeColor - Type: `String` Customize the theme color. Use [CSS3 variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables) feature and polyfill in older browsers. ```js window.$docsify = { themeColor: '#3F51B5', }; ``` ## alias - Type: `Object` Set the route alias. You can freely manage routing rules. Supports RegExp. ```js window.$docsify = { alias: { '/foo/(.*)': '/bar/$1', // supports regexp '/zh-cn/changelog': '/changelog', '/changelog': 'https://raw.githubusercontent.com/docsifyjs/docsify/master/CHANGELOG', '/.*/_sidebar.md': '/_sidebar.md', // See #301 }, }; ``` ## autoHeader - type: `Boolean` If `loadSidebar` and `autoHeader` are both enabled, for each link in `_sidebar.md`, prepend a header to the page before converting it to HTML. See [#78](https://github.com/docsifyjs/docsify/issues/78). ```js window.$docsify = { loadSidebar: true, autoHeader: true, }; ``` ## executeScript - type: `Boolean` Execute the script on the page. Only parse the first script tag ([demo](themes)). If Vue is present, it is turned on by default. ```js window.$docsify = { executeScript: true, }; ``` ```markdown ## This is test ``` Note that if you are running an external script, e.g. an embedded jsfiddle demo, make sure to include the [external-script](plugins.md?id=external-script) plugin. ## noEmoji - type: `Boolean` Disabled emoji parse. ```js window.$docsify = { noEmoji: true, }; ``` ?> If this option is `false` but you don't want to emojify some specific colons, [refer to this](https://github.com/docsifyjs/docsify/issues/742#issuecomment-586313143) ## mergeNavbar - type: `Boolean` Navbar will be merged with the sidebar on smaller screens. ```js window.$docsify = { mergeNavbar: true, }; ``` ## formatUpdated - type: `String|Function` We can display the file update date through **{docsify-updated}** variable. And format it by `formatUpdated`. See https://github.com/lukeed/tinydate#patterns ```js window.$docsify = { formatUpdated: '{MM}/{DD} {HH}:{mm}', formatUpdated: function(time) { // ... return time; }, }; ``` ## externalLinkTarget - type: `String` - default: `_blank` Target to open external links inside the markdown. Default `'_blank'` (new window/tab) ```js window.$docsify = { externalLinkTarget: '_self', // default: '_blank' }; ``` ## cornerExternalLinkTarget - type:`String` - default:`_blank` Target to open external link at the top right corner. Default `'_blank'` (new window/tab) ```js window.$docsify = { cornerExternalLinkTarget: '_self', // default: '_blank' }; ``` ## externalLinkRel - type: `String` - default: `noopener` Default `'noopener'` (no opener) prevents the newly opened external page (when [externalLinkTarget](#externallinktarget) is `'_blank'`) from having the ability to control our page. No `rel` is set when it's not `'_blank'`. See [this post](https://mathiasbynens.github.io/rel-noopener/) for more information about why you may want to use this option. ```js window.$docsify = { externalLinkRel: '', // default: 'noopener' }; ``` ## routerMode - type: `String` - default: `hash` ```js window.$docsify = { routerMode: 'history', // default: 'hash' }; ``` ## crossOriginLinks - type: `Array` When `routerMode: 'history'`, you may face cross-origin issues. See [#1379](https://github.com/docsifyjs/docsify/issues/1379). In Markdown content, there is a simple way to solve it: see extends Markdown syntax `Cross-Origin link` in [helpers](helpers.md). ```js window.$docsify = { crossOriginLinks: ['https://example.com/cross-origin-link'], }; ``` ## noCompileLinks - type: `Array` Sometimes we do not want docsify to handle our links. See [#203](https://github.com/docsifyjs/docsify/issues/203). We can skip compiling of certain links by specifying an array of strings. Each string is converted into to a regular expression (`RegExp`) and the _whole_ href of a link is matched against it. ```js window.$docsify = { noCompileLinks: ['/foo', '/bar/.*'], }; ``` ## onlyCover - type: `Boolean` Only coverpage is loaded when visiting the home page. ```js window.$docsify = { onlyCover: false, }; ``` ## requestHeaders - type: `Object` Set the request resource headers. ```js window.$docsify = { requestHeaders: { 'x-token': 'xxx', }, }; ``` Such as setting the cache ```js window.$docsify = { requestHeaders: { 'cache-control': 'max-age=600', }, }; ``` ## ext - type: `String` Request file extension. ```js window.$docsify = { ext: '.md', }; ``` ## fallbackLanguages - type: `Array` List of languages that will fallback to the default language when a page is requested and it doesn't exist for the given locale. Example: - try to fetch the page of `/de/overview`. If this page exists, it'll be displayed. - then try to fetch the default page `/overview` (depending on the default language). If this page exists, it'll be displayed. - then display the 404 page. ```js window.$docsify = { fallbackLanguages: ['fr', 'de'], }; ``` ## notFoundPage - type: `Boolean` | `String` | `Object` Load the `_404.md` file: ```js window.$docsify = { notFoundPage: true, }; ``` Load the customized path of the 404 page: ```js window.$docsify = { notFoundPage: 'my404.md', }; ``` Load the right 404 page according to the localization: ```js window.$docsify = { notFoundPage: { '/': '_404.md', '/de': 'de/_404.md', }, }; ``` > Note: The options for fallbackLanguages don't work with the `notFoundPage` options. ## topMargin - type: `Number` - default: `0` Adds a space on top when scrolling the content page to reach the selected section. This is useful in case you have a _sticky-header_ layout and you want to align anchors to the end of your header. ```js window.$docsify = { topMargin: 90, // default: 0 }; ``` ## vueComponents - type: `Object` Creates and registers global [Vue components](https://vuejs.org/v2/guide/components.html). Components are specified using the component name as the key with an object containing Vue options as the value. Component `data` is unique for each instance and will not persist as users navigate the site. ```js window.$docsify = { vueComponents: { 'button-counter': { template: ` `, data() { return { count: 0, }; }, }, }, }; ``` ```markdown ``` ## vueGlobalOptions - type: `Object` Specifies [Vue options](https://vuejs.org/v2/api/#Options-Data) for use with Vue content not explicitly mounted with [vueMounts](#mounting-dom-elements), [vueComponents](#components), or a [markdown script](#markdown-script). Changes to global `data` will persist and be reflected anywhere global references are used. ```js window.$docsify = { vueGlobalOptions: { data() { return { count: 0, }; }, }, }; ``` ```markdown

{{ count }}

```

{{ count }}

## vueMounts - type: `Object` Specifies DOM elements to mount as [Vue instances](https://vuejs.org/v2/guide/instance.html) and their associated options. Mount elements are specified using a [CSS selector](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) as the key with an object containing Vue options as their value. Docsify will mount the first matching element in the main content area each time a new page is loaded. Mount element `data` is unique for each instance and will not persist as users navigate the site. ```js window.$docsify = { vueMounts: { '#counter': { data() { return { count: 0, }; }, }, }, }; ``` ```markdown
{{ count }}
``` {{ count }}