GithubHelp home page GithubHelp logo

hans000 / html-to-md Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stonehank/html-to-md

0.0 0.0 0.0 391 KB

A JS library for convert HTML<String> to markdown<String>, gzip 7kb

Home Page: https://stonehank.github.io/html-to-md/

License: MIT License

JavaScript 78.18% HTML 21.82%

html-to-md's Introduction

一个用于转换HTMLMarkdown的工具。English


Build Status npm codecov npm bundle size David

效果

live-demo

为什么做这个工具

最初的动机是希望将leetcode-cn上的题目和自己的解答搬到github, 但是获取的介绍都是html格式文本,因此有了将html转换为markdown的需求。

找了几个工具,结果并不是很合胃口,有的不支持nodejs,有的并不能很好的转换,最终决定自己写一个来用。

刚开始只是写了一个比较简单的,但已经能够处理我的需求。

但后来偶尔一次使用,面对更复杂的html格式,就会出现混乱,这个库也就是一个重构版, 当然,它可能还存在很多bug没有发现,但希望能在后续不断完善,如果有发现bug,请提issuePR,我会第一时间进行处理。

使用说明

安装

npm -i html-to-md

使用
const html2md=require('html-to-md')
// or if you're using ES6
import html2md from 'html2md'

console.log(html2md('<strong><em>strong and italic</em></strong>',options,force))
// ***strong and italic***

参数(可选):

options:

名称 数据类型 默认值 说明
skipTags Array
[
  'div',
  'html',
  'body',
  'nav',
  'section',
  'footer',
  'main',
  'aside',
  'article',
  'header'
]
需要忽略的标签名
emptyTags Array [] 不仅忽略它本身,它内部所有标签名全部忽略
ignoreTags Array
[
  '',
  'style',
  'head',
  '!doctype',
  'form',
  'svg',
  'noscript',
  'script',
  'meta'
]
忽视标签及其内部所有内容
aliasTags Object
{
  figure :'p',
  figcaption:'p',
  dl:'p', 
  dd:'p', 
  dt:'p'
}
为标签定义一个别名(通常作用于一些不常用标签)

优先权:skipTags > emptyTags > ignoreTags > aliasTags

例:

html2md('<><b><i>abc</i></b></>',{ignoreTags:['']})
// ''

html2md('<><b><i>abc</i></b></>',{skipTags:['']})
// ***abc***

html2md('<><b><i>abc</i></b></>',{emptyTags:['']})
// abc

html2md('<><b><i>abc</i></b></>',{skipTags:[''],aliasTags:{b:'ul',i:'li'}})
// *  abc

force(Boolean)(默认false)

说明
true 表示强制使用自定义配置
false 对自定义配置使用Object.assign操作

例:

// 默认 skipTags 为 ['div','html','body']

// 配置一:
html2md('<div><b><i>abc</i></b></div>',{skipTags :['b']},false)
// skipTags 为 ['div','html','body','b']

// 配置二:
html2md('<div><b><i>abc</i></b></div>',{skipTags :['b']},true)
// 经过配置后 skipTags 为 ['b']

特点

  • 快速,小巧,无任何依赖,gzip 7kb

  • 支持nodeJS,参数(html文本)为字符串

  • 100+单元测试和模块测试,覆盖率98%

注意:只有有效规范的HTML文本才能准确显示结果,如<p>abc<<i>abc</>等都是无效文本

支持标签

  • a
  • b
  • blockquote
  • code
  • del
  • em
  • h1~h6
  • hr
  • i
  • img
  • input
  • li
  • ol
  • p
  • pre
  • s
  • strong
  • table
  • tbody
  • td
  • th
  • thead
  • tr
  • ul

html-to-md's People

Contributors

banonotit avatar dependabot[bot] avatar rukshn avatar stonehank avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.