mirror of
https://github.com/docsifyjs/docsify.git
synced 2026-10-25 01:15:50 +08:00
77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
const stripIndent = require('common-tags/lib/stripIndent');
|
|
const { serverIP, serverPort } = require('./server.js');
|
|
|
|
async function docsifyInit(page, options) {
|
|
const defaults = {
|
|
config: {},
|
|
content: '',
|
|
coverpage: '',
|
|
navbar: '',
|
|
sidebar: '',
|
|
routes: [[]],
|
|
style: '',
|
|
styleURLs: ['/lib/themes/vue.css'],
|
|
script: '',
|
|
scriptURLs: [],
|
|
url: `http://${serverIP}:${serverPort}`,
|
|
};
|
|
const settings = {
|
|
...defaults,
|
|
...options,
|
|
};
|
|
|
|
// Routes - General
|
|
if (settings.routes.length > 0 && typeof settings.routes[0] === 'string') {
|
|
settings.routes = [settings.routes];
|
|
}
|
|
settings.routes.forEach(async ([urlGlob, response]) => {
|
|
if (urlGlob && response) {
|
|
if (typeof response === 'string') {
|
|
response = {
|
|
body: stripIndent`${response}`,
|
|
};
|
|
}
|
|
await page.route(urlGlob, route => route.fulfill(response));
|
|
}
|
|
});
|
|
|
|
// Routes - Docsify Markdown
|
|
[
|
|
[settings.content, '**/README.md'],
|
|
[settings.coverpage, '**/_coverpage.md', { coverpage: true }],
|
|
[settings.navbar, '**/_navbar.md', { loadNavbar: true }],
|
|
[settings.sidebar, '**/_sidebar.md', { loadSidebar: true }],
|
|
].forEach(async ([markdown, urlGlob, config]) => {
|
|
if (markdown) {
|
|
if (config) {
|
|
Object.assign(settings.config, config);
|
|
}
|
|
await page.route(urlGlob, route =>
|
|
route.fulfill({
|
|
contentType: 'text/markdown',
|
|
body: stripIndent`${markdown}`,
|
|
})
|
|
);
|
|
}
|
|
});
|
|
|
|
// Load URL
|
|
await page.goto(settings.url);
|
|
|
|
// Docsify configuration
|
|
if (Object.keys(settings.config).length > 0) {
|
|
await page.evaluate(config => {
|
|
Object.assign(window.$docsify, config);
|
|
}, settings.config);
|
|
}
|
|
|
|
// CSS
|
|
settings.styleURLs.forEach(async url => await page.addStyleTag({ url }));
|
|
|
|
// JavaScript
|
|
settings.scriptURLs.forEach(async url => await page.addScriptTag({ url }));
|
|
await page.addScriptTag({ url: '/lib/docsify.js' });
|
|
}
|
|
|
|
module.exports = docsifyInit;
|