美文网首页Gulp前端构建程序员
Gitdown-cn:支持Markdown中文TOC的Gulp插

Gitdown-cn:支持Markdown中文TOC的Gulp插

作者: 敬亭阁主 | 来源:发表于2019-04-01 16:05 被阅读9次

昨天写了一篇文章,介绍了如何进行模块化文档编写与自动化打包成单个HTML文件的方法。但是还有一点遗憾,就是不支持中文标题,这个是由于我使用的两个插件本身的问题,今天花了点时间,把这个问题解决了一下,记录如下。

我的计划是把这两个插件合并为一个,并新起一个名字,上传到npmjs上去,这样就可以把原来的工程中的引用直接替换为这个新的插件,方便随时调用。

思路确定了,下面介绍一下工作步骤。

新建了一个工程 gitdown-cn,将原先的gitdownmarkdown-contents代码都复制过来,目录结构如下所示。

工程目录

把原来gitdown中引用markdown-contents插件的地方都修改为引用当前目录下的mardown-contents.js文件

const MarkdownContents = require('./markdown-contents.js');

修改package.json文件,精简一下,变成我自己的打包文件

{
  "bundleDependencies": false,
  "dependencies": {
    "bluebird": "^3.5.3",
    "contents": "^5.0.0",
    "deadlink": "^1.1.3",
    "diacritics-map": "^0.1.0",
    "eslint": "^5.13.0",
    "filesize": "^4.0.0",
    "gitinfo": "^2.2.0",
    "glob": "^7.1.3",
    "jsonfile": "^5.0.0",
    "lodash": "^4.17.11",
    "marked": "^0.6.0",
    "moment": "^2.24.0",
    "stack-trace": "^0.0.10",
    "url-extractor": "^2.0.2",
    "yargs": "^12.0.5"
  },
  "keywords": [
    "github",
    "markdown",
    "table of contents",
    "toc",
    "chinese",
    "include",
    "variable",
    "transclusion"
  ],
  "license": "BSD-3-Clause",
  "main": "./dist/index.js",
  "name": "gitdown-cn",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/SagittariusZhu/gitdown-cn.git"
  },
  "version": "2.5.7"
}

然后到原来的项目目录下执行以下命令,从本地添加这个插件

npm install ../gitdown-cn

修改gulpfile.js中的引用,从gitdown修改为gitdonw-cn

const Gitdown = require('gitdown-cn');

这时候就可以尝试执行以下gulp命令,看看是否能够正常工作。
OK,接下了就是修改gitdown-cn中相关代码,使其能够支持中文标题自动生成对应的ID。

这里用了 querystring插件来对中文标题进行编码,用生成的编码值来作为标题的ID

var querystring = require('querystring');
... ...
MarkdownContents.slugify = function(str) {

  str = str.toLowerCase();
  str = str.split(' ').join('-');
  str = str.split(/\t/).join('--');
  str = str.split(/[|$&`~=\\\/@+*!?({[\]})<>=.,;:'"^]/).join('');
  str = str.split(/[。?!,、;:“”【】()〔〕[]﹃﹄“ ”‘’﹁﹂—…-~《》〈〉「」]/).join('');
  str = replaceDiacritics(str);
  str = querystring.escape(str);

  return str;
};

其它还有一些修改,这里就不一一列举了,修改完毕后,回到原来的项目目录下,把标题修改为中文,然后再执行gulp,就可以看到如下的页面,是不是很爽啊!

效果图

一切都OK了,就可以把插件发布到npmjs上,这样大家都可以用啦,好东西要共享嘛!

npm publish

这是插件gitdown-cn,欢迎使用!

相关文章

  • Gitdown-cn:支持Markdown中文TOC的Gulp插

    昨天写了一篇文章,介绍了如何进行模块化文档编写与自动化打包成单个HTML文件的方法。但是还有一点遗憾,就是不支持中...

  • Markdown-简要总结

    Markdown 目录 用 [TOC]来生成目录: [TOC]<简书暂不支持?> 简介 markdown的设计用低...

  • 测试简书markdown编辑器能力

    测试简书markdown编辑器能力 测试结果: 项目Yes or No支持markdown否yes支持toc目录否...

  • Markdown常用语法入门

    本文介绍了一些在写作中常用的markdown语法。 [TOC] TOC语法简书不支持,github支持。 1.序号...

  • 最常用的markdown技能

    [toc] 注:此处的"toc"应显示为目录,但是简书不支持,显示不出来。 1.关于markdown版本 mark...

  • 推荐几个公众号Markdown格式化网站

    @[toc] 好多人都喜欢用 Markdown 写文 但是公众号后台编辑又不支持 Markdown 因此,催生出了...

  • 【原创】5分钟玩转Markdown

    希望简书支持的Markdown功能 [TOC]生成目录 PC端预览时,原文与预览同步滚动 支持公式 $$ x{yz...

  • 4. 其他

    声明:本文是对 Markdown 语法说明(简体中文版)的转载与临摹。 自动链接 Markdown 支持以比较简短...

  • markdown语法

    显示全文目录用 [toc]一些博客和软件不支持[TOC] 前言 Markdown是一种轻量级标记语言,易读易写,语...

  • Gulp Markdown with Browser sync

    Just because the html files generated by gulp-markdown is...

网友评论

    本文标题:Gitdown-cn:支持Markdown中文TOC的Gulp插

    本文链接:https://www.haomeiwen.com/subject/flmvbqtx.html