1
0
mirror of https://github.com/142vip/408CSFamily.git synced 2026-02-03 10:33:47 +08:00
Files
408CSFamily/scripts/mark-map

91 lines
2.3 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* 将思维导图的md格式转化为html提供在线预览
* 链接https://www.npmjs.com/package/markmap-cli
*/
const {execShell} = require("./.exec");
const path = require('path');
const fs = require('fs');
const markMapSourcePath = path.join(__dirname, '../', 'docs/manuscripts/mark-map')
const markMapTargetPath = path.join(__dirname, '../', 'docs/.vuepress/public/mark-map')
/**
* 扫面目录
*/
function scanDirectory(directory, fileType) {
const fileList = fs.readdirSync(directory)
return fileList
.map(file => {
const filePath = path.join(directory, file);
const fileExtension = path.extname(file).toLowerCase();
if (fileExtension === `.${fileType.toLowerCase()}`) {
return filePath
}
})
// 过滤空
.filter(c => c != null)
}
(async () => {
/**
* 第一步: 清空站点思维导图文件存放目录
*/
const delHtmlDir = `rm -rf ${path.join(markMapTargetPath, '*')}`
/**
* 第二步: 将md文档转化为思维导图网页
*/
const mdList = scanDirectory(markMapSourcePath, 'md')
const mdToHtmlCmdStr = mdList.map(md => `markmap --no-open ${md}`).join(' && ')
/**
* 第三步: 根据文件类型将思维导图网页文件移动到站点指定目录
*
*/
const mdHtmlByFileType = path.join(markMapSourcePath, '*.html')
const moveHtmlCmdStr = `mv -f ${mdHtmlByFileType} ${markMapTargetPath}`
/**
* 第四步: 将xmind思维导图原件复制到指定目录
*
*/
const xmindByFileType = path.join(markMapSourcePath, '*.xmind')
const cpXmindCmdStr = `cp -f ${xmindByFileType} ${markMapTargetPath}`
/**
* 第五步: 复制mark-map对应的json文件
*/
const cpIndexJsonCmdStr = `cp -f ${path.join(markMapSourcePath, 'index.json')} ${markMapTargetPath}`
// 脚本执行
await execShell([
delHtmlDir,
mdToHtmlCmdStr,
moveHtmlCmdStr,
cpXmindCmdStr,
cpIndexJsonCmdStr
])
/**
* 第六步: 对mark-map中的xmind文件重命名
*
*/
const markMapData = require(path.join(markMapTargetPath, 'index.json'))
for (const {originXmindFileName, targetXmindFileName} of markMapData) {
const originPath = path.join(markMapTargetPath, originXmindFileName)
const targetPath = path.join(markMapTargetPath, targetXmindFileName)
await fs.renameSync(originPath, targetPath)
}
})()