| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- const util = require('util')
- const path = require("path");
- const dirTree = require("directory-tree");
- const tree = dirTree("docs");
- const fs = require("fs");
- console.log("Current directory:", __dirname);
- /*
- This transform the node from dirTree into a form acceptable by Vuepress sidebar
- a.name becomes a.text
- a.path becomes a.link , and remove this field if there is children and set collapsible to true
- recursively do the same operator for each a.children
- */
- function transform_sidebar(child) {
- child.title = child.name.replace(".md", "");;
- child.link = child.path.replace("docs", "");
- if (child.link == "/README.md") {
- child.link = "/"; /* special case */
- child.title = "Home";
- }
- /* no children , return array of link/text */
- if (!child.children) {
- return [child.link, child.title];
- }
- /* return as a hash record with title/children */
- if (child.children) {
- let rec = { title: child.title, collapsible: true, children: [] };
- child.children.forEach(children => {
- /* bad child if this is a terminating node */
- if (!children.name.endsWith(".md") && !children.children) {
- // console.log("Ignoring : " + children.name)
- return;
- }
- rec.children.push(transform_sidebar(children));
- });
- return rec;
- }
- }
- // comment
- let sidebar = [];
- tree.children.forEach(child => {
- if (child.name == ".vuepress") return;
- if (child.name == ".npmignore") return;
- if (child.name.endsWith(".swp") ) return;
- sidebar.push(transform_sidebar(child));
- });
- console.log("SIDEBAR", sidebar[8]);
- module.exports = {
- title: 'Kinisi-User-Guide',
- description: 'Just playing around',
- head: [
- ['link', { rel: 'icon', href: '/favicon.ico' }]
- ],
- server: {
- hmr: { port: 8080 },
- },
- // sidebar
- themeConfig: {
- sidebar: sidebar,
- searchMaxSuggestions: 10,
- lastUpdated: 'Last Updated' // string | boolean
- },
- plugins: [
- ["vuepress-plugin-code-copy", { staticIcon: true, align: 'top' }],
- ['@vuepress/plugin-register-components', { componentsDir: "/vp/docs/.vuepress/compdir" }],
- ['tabs'],
- // ["demo", { car: 'mercedes' }],
- ["pagedata", { car: 'mercedes' }]
- // ['vuepress-plugin-graphviz']
- ],
- // add javascript to header
- head: [
- // ['script', { src: 'https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.3.0/viz123.js' }]
- ['script', { src: '/viz.js' }]
- ],
- /*
- markdown: {
- extendMarkdown: md => {
- md.use(require('markdown-it-html5-embed'), {
- html5embed: {
- useImageSyntax: true,
- useLinkSyntax: false
- }
- })
- }
- }
- */
- }
|