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

昨天寫了一篇文章吼鱼,介紹了如何進(jìn)行模塊化文檔編寫與自動(dòng)化打包成單個(gè)HTML文件的方法蓬豁。但是還有一點(diǎn)遺憾绰咽,就是不支持中文標(biāo)題,這個(gè)是由于我使用的兩個(gè)插件本身的問(wèn)題地粪,今天花了點(diǎn)時(shí)間取募,把這個(gè)問(wèn)題解決了一下,記錄如下蟆技。

我的計(jì)劃是把這兩個(gè)插件合并為一個(gè)玩敏,并新起一個(gè)名字,上傳到npmjs上去质礼,這樣就可以把原來(lái)的工程中的引用直接替換為這個(gè)新的插件旺聚,方便隨時(shí)調(diào)用。

思路確定了眶蕉,下面介紹一下工作步驟砰粹。

新建了一個(gè)工程 gitdown-cn伸眶,將原先的gitdownmarkdown-contents代碼都復(fù)制過(guò)來(lái)刽宪,目錄結(jié)構(gòu)如下所示。

工程目錄

把原來(lái)gitdown中引用markdown-contents插件的地方都修改為引用當(dāng)前目錄下的mardown-contents.js文件

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

修改package.json文件嘴秸,精簡(jiǎn)一下岳掐,變成我自己的打包文件

{
  "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"
}

然后到原來(lái)的項(xiàng)目目錄下執(zhí)行以下命令串述,從本地添加這個(gè)插件

npm install ../gitdown-cn

修改gulpfile.js中的引用纲酗,從gitdown修改為gitdonw-cn

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

這時(shí)候就可以嘗試執(zhí)行以下gulp命令新蟆,看看是否能夠正常工作。
OK吮螺,接下了就是修改gitdown-cn中相關(guān)代碼鸠补,使其能夠支持中文標(biāo)題自動(dòng)生成對(duì)應(yīng)的ID。

這里用了 querystring插件來(lái)對(duì)中文標(biāo)題進(jìn)行編碼闹丐,用生成的編碼值來(lái)作為標(biāo)題的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;
};

其它還有一些修改腮郊,這里就不一一列舉了筹燕,修改完畢后,回到原來(lái)的項(xiàng)目目錄下过咬,把標(biāo)題修改為中文制妄,然后再執(zhí)行gulp,就可以看到如下的頁(yè)面衔掸,是不是很爽霸壹埂!

效果圖

一切都OK了,就可以把插件發(fā)布到npmjs上诗芜,這樣大家都可以用啦埃疫,好東西要共享嘛栓霜!

npm publish

這是插件gitdown-cn胳蛮,歡迎使用丛晌!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抚垄,隨后出現(xiàn)的幾起案子呆馁,更是在濱河造成了極大的恐慌毁兆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓷叫,死亡現(xiàn)場(chǎng)離奇詭異送巡,居然都是意外死亡骗爆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門煮寡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)犀呼,“玉大人外臂,你說(shuō)我怎么就攤上這事。” “怎么了炭菌?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵黑低,是天一觀的道長(zhǎng)克握。 經(jīng)常有香客問(wèn)我枷踏,道長(zhǎng),這世上最難降的妖魔是什么呕寝? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任下梢,我火速辦了婚禮孽江,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岗屏。我一直安慰自己,他們只是感情好婉烟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布似袁。 她就那樣靜靜地躺著,像睡著了一般昙衅。 火紅的嫁衣襯著肌膚如雪定鸟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天啼县,我揣著相機(jī)與錄音,去河邊找鬼华糖。 笑死瘟裸,一個(gè)胖子當(dāng)著我的面吹牛诵竭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沙郭,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼病线,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲤嫡!你這毒婦竟也來(lái)了暖眼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤司澎,失蹤者是張志新(化名)和其女友劉穎挤安,沒(méi)想到半個(gè)月后丧鸯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年虐先,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了派敷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撰洗。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡差导,死狀恐怖设褐,靈堂內(nèi)的尸體忽然破棺而出泣刹,到底是詐尸還是另有隱情,我是刑警寧澤椅您,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布掀泳,位于F島的核電站,受9級(jí)特大地震影響脑沿,放射性物質(zhì)發(fā)生泄漏捅伤。R本人自食惡果不足惜巫玻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一仍秤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凰浮,春花似錦袜茧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至姨谷,卻和暖如春梦湘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背践叠。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工禁灼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轿曙。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓弄捕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親导帝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子守谓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比您单,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù)斋荞,API也非常簡(jiǎn)單,學(xué)...
    井皮皮閱讀 1,299評(píng)論 0 10
  • 在現(xiàn)在的前端開發(fā)中虐秦,前后端分離平酿、模塊化開發(fā)、版本控制悦陋、文件合并與壓縮蜈彼、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,443評(píng)論 1 32
  • 我的新作觀點(diǎn)網(wǎng)http://www.guandn.com(觀點(diǎn)網(wǎng)是一個(gè)獵獲新奇、收獲知識(shí)还绘、重在獨(dú)立思考的網(wǎng)站)拍顷,它...
    pizCat閱讀 2,452評(píng)論 1 18
  • gulpjs是一個(gè)前端構(gòu)建工具文兑,與gruntjs相比,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù)搂根,API也非常簡(jiǎn)單剩愧,學(xué)...
    MC丶逗逼嘿閱讀 677評(píng)論 0 3
  • gulpjs是一個(gè)前端構(gòu)建工具锦积,與gruntjs相比,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù)哮幢,API也非常簡(jiǎn)單家浇,學(xué)...
    小裁縫sun閱讀 930評(píng)論 0 3