自动生成侧边栏功能的相关考虑 #578
-
我之前用的别的主题,文章文档上百篇添加侧边栏就会比较费劲,所以在config.js之外写了自动获取目录的函数,Hope是不是可以考虑在这里增强一下(PS 我是个Javaer ) const fs = require('fs')
let ignoreFileNameSet = new Set()
ignoreFileNameSet.add('sidebar.js')
let test = walk(__dirname, '')
console.log(JSON.stringify(test.children, null, "\t"))
module.exports = function resolveSideBar() {
let sidebars = walk(__dirname, '').children
return sidebars
}
function walk(dir, sidebarDir) {
let returnValue = {
children : [],
hasArticle : false
}
fs.readdirSync(dir).forEach(function(filename){
if (!ignoreFileNameSet.has(filename)){
var path = dir+"/"+filename
var stat = fs.statSync(path)
if (stat && stat.isDirectory()) {
let obj = {}
obj.title = filename
let result = walk(path, sidebarDir + filename + '/')
obj.children = result.children
returnValue.children.push(obj)
}
}
})
fs.readdirSync(dir).forEach(function(filename){
if (!ignoreFileNameSet.has(filename)){
var path = dir+"/"+filename
var stat = fs.statSync(path)
if (stat && stat.isFile()) {
returnValue.children.push(sidebarDir + filename)
returnValue.hasArticle = true
}
}
})
return returnValue
} |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
我之前考虑过这个功能,也给 vuepress 官方提过建议增加 是这样的,按照目录生成侧边栏是很简单的,但是主要问题在于顺序上,也就是你希望文件夹的文件和其他文件夹按照何种顺序排列的问题。 这个问题目前肯定是需要人主动指定的。所以我在这个基础上增加了 prefix,也就是原则上你并不难配置出一个侧边栏出来。 我的博客有 600多篇文章,侧边栏是自己配置的,地址 https://mrhope.site ,配置在这 https://github.com/Mister-Hope/Mister-Hope.github.io/tree/main/src/.vuepress/config/sideBar 也不是特别复杂。 所以这个功能我无意支持。 以下是两个路线:
我跟 vdoing 的作者有过交流,你可以看一下 vuepress-theme-vdoing 那边,那边是通过强制文件名格式的方案来确定排列顺序。如果有需求可以转用那个。 我主题的大部分增强功能都拆分成了插件,每个插件有自己的独立的文档,如果有需求可以不适用主题只使用插件来享受增强。
|
Beta Was this translation helpful? Give feedback.
-
另外在 V2 中我有计划提供 |
Beta Was this translation helpful? Give feedback.
我之前考虑过这个功能,也给 vuepress 官方提过建议增加
sitebar: 'auto-generate'
的功能,但是交流最后还是放弃 PR 了。是这样的,按照目录生成侧边栏是很简单的,但是主要问题在于顺序上,也就是你希望文件夹的文件和其他文件夹按照何种顺序排列的问题。
这个问题目前肯定是需要人主动指定的。所以我在这个基础上增加了 prefix,也就是原则上你并不难配置出一个侧边栏出来。
我的博客有 600多篇文章,侧边栏是自己配置的,地址 https://mrhope.site ,配置在这 https://github.com/Mister-Hope/Mister-Hope.github.io/tree/main/src/.vuepress/config/sideBar 也不是特别复杂。 所以这个功能我无意支持。
以下是两个路线:
我跟 vdoing 的作者有过交流,你可以看一下 vuepress-theme-vdoing 那边,那边是通过强制文件名格式的方案来确定排列顺序。如果有需求可以转用那个。
我主题的大部分增强功能都拆分成了插件,每个插件有自己的独立的文档,如果有需求可以不适用主题只使用插件来享受增强。