前言

先说说为啥nodejs版本的turndown项目在把html转换成markdown上会让我觉得秒杀掉python的老牌高star项目html2text,原因是我特别在意的一个功能就是代码高亮,很多python项目都不能在```后自动加上语言类型,甚至html2text连加```都做不到,好像可以加<code></code>标签,不知道是不是等效于3个反引号。

然后我们再说回nodejs版本的turndown项目,这个项目牛逼之处就在于实例化时加上一个参数就可以实现自动识别代码高亮区域,加上```和代码语言,但是呢这个牛逼的项目的作者在issue中明确表示对将项目改成cli版本的没任何兴趣,有需要的自行想办法。

实战

下面闲言少叙,我们进入实战环节。
首先,npm和node的安装和换源在这我就不赘述了,首先我们将turndown项目代码同步到本地,

git clone https://github.com/mixmark-io/turndown.git

然后我们用`vim`打开`package.json`,将第二行的`name`对应的值的后面随便加个字符串也就是变成别的名字,然后执行下面的命令安装`turndown`项目,

npm install turndown --save

最后将下面代码保存为一个`js`文件,如`md_helper.js`

// For Node
var TurndownService = require('turndown')

var turndownService = new TurndownService({ 'codeBlockStyle':'fenced' })
var myArgs = process.argv.slice(2)

var filename=myArgs[0]
const fs = require('fs')

try {
  const data = fs.readFileSync(filename, 'utf8')
  var markdown = turndownService.turndown(`${data}`)
 console.log(markdown)
} catch (err) {
  console.error(err)
}

使用方式如下:

node md_helper.js tmp.html