markdown 文档格式检查工具 lint-md - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
50vip
V2EX    分享创造

markdown 文档格式检查工具 lint-md

  •  
  •   50vip 2018-11-23 15:37:40 +08:00 4653 次点击
    这是一个创建于 2519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    lint-md

    用于检查中文 markdown 编写格式规范的命令行工具,基于 AST 开发,且方便集成 ci。Cli tool to lint your markdown file for Chinese.

    开源地址:https://github.com/hustcc/lint-md

    Build Status npm npm

    安装

    npm i -g lint-md

    使用

    Usage: <lint-md> <files...> [options] lint your markdown files Options: -v, --version output the version number -c, --config [configure-file] use the configure file, default .lintmdrc -h, --help output usage information 

    Example:

    lint-md README.md Document.md 

    检查类型

    检查规则来源于 chinese-copywriting-guidelines.

    | 规则 | 详细描述 | 解决办法 | | ------ | ------ | ------ | | space-between | 中文与英文数字之间需要增加空格 | 响应位置增加空格 | | no-empty-code-lang | 代码语言不能为空 | 在代码块语法上增加语言 | | no-empty-url | 链接和图片地址不能为空 | 填写完整的 url,或者不使用链接和图片语法 | | no-empty-list | List 内容不能为空 | List 语法中,填写内容 | | no-empty-code | 代码块内容不能为空 | 删除空的代码块,或者填充代码内容 | | no-empty-blockquote | blockquote 内容不能为空 | 删除空的 blockquote,或者填充内容 | | no-special-characters | 文本中不能有特殊字符 | 可能是复制出来的特殊字符,删除特殊字符即可 |

    目前仅仅检查了比较通用的类型,欢迎 pull request,在 rules 中增加自己的规则,开发约束:

    • 规则主要针对于中文 markdown 的编写规范
    • 使用类 babel plugin 的方式来进行规则检查,一个插件对应一个规则
    • 规则名称对应和插件文件名保持一致
    • 先提 issue 进行讨论
    • AST 工具,使用其中的 markdown AST 辅助开发插件

    配置

    默认所有的规则都是 error 类型,但是可以通过配置来指定规则类型。示例 .lintmdrc

    { "excludeFiles": [], "rules": { "no-empty-code": 1 } } 

    通过 rules 来配置规则的等级。

    • 0:ignore
    • 1:warning
    • 2:error

    通过 excludeFiles 来忽略文件和目录,glob 语法。

    ci 集成

    • Travis

    .travis.yml 文件中配置以下内容。

    language: node_js node_js: - "10" before_install: - npm i -g lint-md script: lint-md README.md 
    • lint-stage

    package.json 中增加以下配置。

    "lint-staged": { "src/**/*.{md,markdown}": [ "lind-md" ] } 

    License

    MIT@hustcc.

    9 条回复    2018-11-26 09:48:49 +08:00
    Showfom
        1
    Showfom  
    PRO
       2018-11-23 16:03:04 +08:00 via iPhone
    支持一下
    lonelinsky
        2
    lonelinsky  
       2018-11-23 16:18:49 +08:00
    目前在用 VSCode 的 markdownlint,表示很好用,支持。
    50vip
        3
    50vip  
    OP
       2018-11-23 16:48:58 +08:00
    @lonelinsky 我是希望多加一些中文的格式校验,所以做了 lint-md,用于写文章,写博客,优化排版!
    50vip
        4
    50vip  
    OP
       2018-11-23 16:54:50 +08:00
    @lonelinsky 这个的好处就是可以在 ci 中使用,这样大家 p 的时候,都可以按照这么标准来!
    lonelinsky
        5
    lonelinsky  
       2018-11-23 16:55:28 +08:00
    @50vip #3 是指「中文文案排版指北」这样的排版规范吗?我当时用它里面提供的排版工具排版了下我的博客,然后因为 Hexo 的一些特殊要求,导致博客直接崩了,后来又重新手动修正了下 =。=
    50vip
        6
    50vip  
    OP
       2018-11-23 17:01:06 +08:00
    @lonelinsky 那个里面我只是采用了 中文和英文数字之间要有空格 这一条。

    他那个脚本好像用正则匹配,肯定容易崩!
    chungzhao
        7
    chungzhao  
       2018-11-24 15:50:39 +08:00
    真棒!!!
    chungzhao
        8
    chungzhao  
       2018-11-24 16:01:21 +08:00
    可以批量检测吗?
    50vip
        9
    50vip  
    OP
       2018-11-26 09:48:49 +08:00
    @chungzhao 可以批量检查格式就是往后面无限加就可以了!

    lint-md xx.md yy.md doc
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5577 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 06:06 PVG 14:06 LAX 23:06 JFK 02:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86