import * as fs from 'fs'
import * as path from 'path'
const rootDir = '../assets/tutorials'
// const outputFile = '../assets/tutorials/sidebar目录.md'
const outputFile = 'sidebar目录.md'
// const filePath = path.join(dir, file)
// const stats = fs.statSync(filePath)
// if (stats.isDirectory()) {
// if (path.extname(file) === '.md') {
// const relativePath = path.relative(rootDir, filePath)
// const link = relativePath.replace(/\\/g, '/')
// result.push(`${' '.repeat(depth)}- [${path.basename(file, '.md')}](${link})`)
// 递归遍历目录,返回目录结构的数组
/**
* ts-node .\exportMdDirectory.ts执行在当前目录下会生成一个sidebar文件
*/
function traverseDir(dir: string, depth: number): string[] {
const files = fs.readdirSync(dir)
const result: string[] = []
const subDirs: string[] = []
files.forEach((file) => {
const filePath = path.join(dir, file)
const stats = fs.statSync(filePath)
if (stats.isDirectory()) {
// 如果是目录,递归遍历子目录
const subDir = traverseDir(filePath, depth + 1)
if (subDir.length > 0) {
subDirs.push(`${' '.repeat(depth)}- **${file}**`)
subDirs.push(...subDir)
}
} else {
// 如果是文件,生成Markdown链接
if (path.extname(file) === '.md') {
const relativePath = path.relative(rootDir, filePath)
const link = relativePath.replace(/\\/g, '/')
result.push(`${' '.repeat(depth)}- [${path.basename(file, '.md')}](${link})`)
}
}
})
return [...subDirs, ...result]
}
// 生成Markdown目录
function generateMarkdownDir() {
const dir = traverseDir(rootDir, 0)
const content = dir.join('\n')
fs.writeFileSync(outputFile, content)
console.log(`已生成Markdown目录:${outputFile}`)
}
generateMarkdownDir()