修改 markdown 二级标题的编号 - 自动编号 autoNumber.js nodejs

需求

我在写 https://www.vuejsdev.com/01FE/must-know-knowledge.html 这个页面的时候,
二级页面 标题前面有编号,但是有时候我会把顺序换下,每次手动修改编号,开始数据量小还行,后面数据多了,比较麻烦

思路

  1. 读取 md文档
  2. 将每行变成数组
  3. 检测是不是标题,是标题 更新一遍数字
  4. 存文件

小遗憾

本来想着 用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])
posted @ 2022-08-31 16:44  彭成刚  阅读(312)  评论(0编辑  收藏  举报