# 侧边栏自动化——艰难的 Node.js 之路

Node.js 永远滴神

在编写博客配置时发现,需要一些自动化的措施,根据文章的目录结构自动生成侧边栏以及导航文件。

一开始想找个插件,或自己写一个插件来做这件事,看了半天,直接在 config.js 里做不就行了吗?

尝试了一下,在 config.js 中可以对静态的目录结构进行读取,于是问题解决。

虽然过程对于一个没怎么写过 node.js 的前端菜鸡有点艰难,但所幸最后还是实现了这个需求。

只需要使用 fs 模块的读取功能动态配置 sidebar 字段即可(有点 C 系统编程的感觉)

function autosidebar(config) {
    const articlePath = './docs/articles'
    const dirs = fs.readdirSync(articlePath, { withFileTypes: true })
 
    for (let dir of dirs) {
        if (dir.isDirectory()) {
            const title = dir.name
            const path = '/articles/' + title
            let children = []

            const filenameList = fs.readdirSync(articlePath + '/' + title)
            for (let filename of filenameList)
                if (filename !== 'README.md')
                    children.push(path + '/' + filename)

            config.themeConfig.sidebar.push({
                title,
                path,
                children
            })
        }
    }

    return config
}

侧边栏自动配置完成后,我还希望能够自动生成每个月的归档文件,也就是月份目录下的 README.md

但尚不清楚 config.js 中能否创建和写入文件,会不会和 vuepress 的生命周期产生冲突,留待明天尝试。

Last Updated: 7/17/2020, 12:25:36 AM