修改 markdown 二级标题的编号 - 自动编号 autoNumber.js nodejs
需求
我在写 https://www.vuejsdev.com/01FE/must-know-knowledge.html 这个页面的时候,
二级页面 标题前面有编号,但是有时候我会把顺序换下,每次手动修改编号,开始数据量小还行,后面数据多了,比较麻烦
思路
- 读取 md文档
- 将每行变成数组
- 检测是不是标题,是标题 更新一遍数字
- 存文件
小遗憾
本来想着 用vscode任务将当前打开的文件名传到脚本里,最后也没成功。凑合用吧。
代码
// autoNumber.js
// 每次换后面的参数
// "自动编号": "node script-ci/autoNumber.js docs\\01FE\\vscode-set-recommend.md",
import { readFileSync, writeFileSync } from 'fs'
import { fileURLToPath } from 'url'
import { dirname, resolve } from 'path'
const __dirname = dirname(fileURLToPath(import.meta.url))
const path = resolve(__dirname, '../' + process.argv[2])
const data = readFileSync(path, { encoding: 'utf-8' })
const arr = data.split('\r\n')
let index = 1
// 二级标题格式
// ## Plug. 21: Path Intellisense
const reg = /(## [\s\S]*?\. )[\d\d].?(:)/
const retArr = arr.map(item => {
if (reg.test(item)) {
console.info('item', item)
const str = item.replace(reg, "$1" + index + "$2")
console.info('stri', str)
console.info('---')
index = index + 1
return str
} else {
return item
}
})
const outStr = retArr.join('\r\n')
writeFileSync(path, outStr)
// console.info('process.argv', process.argv[2])
---------------------------------------------
生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!
https://pengchenggang.gitee.io/navigator/
SMART原则:
目标必须是具体的(Specific)
目标必须是可以衡量的(Measurable)
目标必须是可以达到的(Attainable)
目标必须和其他目标具有相关性(Relevant)
目标必须具有明确的截止期限(Time-based)
生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!
https://pengchenggang.gitee.io/navigator/
SMART原则:
目标必须是具体的(Specific)
目标必须是可以衡量的(Measurable)
目标必须是可以达到的(Attainable)
目标必须和其他目标具有相关性(Relevant)
目标必须具有明确的截止期限(Time-based)