资讯专栏INFORMATION COLUMN

MarkDownToHtml工具开发及gulp-livereload踩坑记

mengbo / 1189人阅读

摘要:官网按照官网的写法,我出现了和这两个哥们同样的问题就是死活激活不了插件,同时访问配置的还看不到相关文件。后面发现这篇文章参考解决了该问题当然还有推荐换插件的,比如等。小工具项目地址

1、官网:https://github.com/vohof/gulp...
2、按照官网的写法,我出现了和这两个哥们同样的问题:
https://stackoverflow.com/que...
https://segmentfault.com/q/10...
就是死活激活不了chrome livereload插件,同时访问配置的port还看不到相关文件。
3、后面发现这篇文章:https://www.bbsmax.com/A/kPzO... 参考解决了该问题.
当然还有推荐换gulp插件的,比如gulp-connect,browser-sync等。

该gulpfile.js要用于markdown动态生成html文件,支持语法高亮和自动生成toc

cnpm install gulp-livereload --save-dev

代码:

var gulp = require("gulp");
var markdown = require("gulp-markdown");
var livereload = require("gulp-livereload");
var renderer = new markdown.marked.Renderer();
var map = require("map-stream");
var hljs = require("./highlight.min.js");

var tocmodel = [];
var toplevel = null;

function pushLevel(model, level, escapedText) {
    if (model[model.length - 1].level == level) {
        model.push({ level: level, name: escapedText, sub: [] });
    } else {
        var parentLevel = model[model.length - 1].level;
        var sub = model[model.length - 1].sub;
        if (parentLevel + 1 < level && sub.length == 0) {
            console.log("不支持跳级,请按层级结构定义!!!");
            return;
        }
        if (sub.length == 0 || sub[sub.length - 1].level == level) { //sub为空或者与sub中元素同级,直接添加。
            sub.push({ level: level, name: escapedText, sub: [] });
        } else {
            pushLevel(sub, level, escapedText);
        }
    }
}

function fmtToc(model) {
    var tmp = "
    " if (model.length > 0) { model.forEach(function(e, i) { var tt = "
  1. " + e.name + ""; if (e.sub.length > 0) { tt = tt + fmtToc(e.sub) + "
  2. "; } else { tt = tt + ""; } tmp = tmp + tt; }); } return tmp + "
"; } renderer.heading = function(text, level) { var escapedText = text.toLowerCase().replace(/[^a-zA-Zu4e00-u9fa5]+/g, "-"); if (level > 1) { //level==1当作题目,忽略 if (!toplevel || tocmodel.length == 0) { toplevel = level tocmodel.push({ level: level, name: escapedText, sub: [] }); } else { pushLevel(tocmodel, level, escapedText); } } return "" + text + ""; } var options = { highlight: function(code) { return hljs.highlightAuto(code).value; }, renderer: renderer } gulp.task("tohtml", function() { return gulp.src("index.md") .pipe(markdown(options)) .pipe(map(function(file, cb) { var fileContents = file.contents.toString(); fileContents = "index文档" + "" + "" + "

目录:

" + fmtToc(tocmodel) + "
" + fileContents + "
"; file.contents = new Buffer(fileContents); //清空历史数据 tocmodel = []; toplevel = null; cb(null, file); })) .pipe(gulp.dest("dist")) .pipe(livereload()); }); gulp.task("watch", ["tohtml"], function() { gulp.watch("./*.md", ["tohtml"]); livereload.listen(); /* gulp.watch(["dist/**"], function() { livereload(); }); */ });

然后chrome按照livereload插件,并配置允许访问文件网址(不知道是否有必要,配置了反正没坏处)

由于livereload只处理livereloading,它不提供静态文件服务器。。。
所以还需要装个http-server:

cnpm install http-server -g

然后按顺序执行

http-server
gulp watch

http-server默认端口是8080,所以可以通过访问localhost:8080找到你要的自动刷新的那个demo文件,比如我的是localhost:8080/dist/index.html。然后点亮chrome中的livereload插件即可。

小工具项目地址:
markdown2html-cli

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84417.html

相关文章

  • vue-cli3.x 新特性坑记

    摘要:前言都到了,所以是时候玩转一下的新特性了。安装的包名称由改成了。方法一原因的配置改变了,导致正确的不能用。打开终端,切换到根路径文件里面修改为方法二是默认路径修改了路径会出现错误。按上面的方法修改完,再全局卸载果然就成功了。 showImg(https://segmentfault.com/img/remote/1460000016423946); 前言 vue-cli 都到 3.0....

    xiaoqibTn 评论0 收藏0
  • Wepy-小程序坑记

    摘要:引言用过原生开发的小程序也知道除了其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的我就入坑鸟。。。开发还是和部分有出入,因此如下记录,入手的教程就不发了只发踩坑。 引言 用过原生开发的小程序也知道除了api 其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的wepy我就入坑鸟。。。这么一个跟vue的开发方式类似的框架,不过说起来跟vue...

    tinna 评论0 收藏0
  • 前端切图工具-坑记_08

    摘要:前端切图工具作为一个前端切图仔总是避免不了切图的痛苦强大的不得不说这个工具强大,不仅由版也有,也不收费。基本已经够用的,这个软件收费而且没有版本。 前端切图工具 作为一个前端切图仔总是避免不了切图的痛苦 强大的PxCook PxCook不得不说这个工具强大,不仅由MAC版也有Windows,也不收费。具体看官网的安装和教程就好了,真的强大 分享一下photoshop mac Phot...

    haobowd 评论0 收藏0
  • nginx basic auth配置坑记

    摘要:的配置由模块提供,对协议进行了支持,用户可通过该配置设置用户名和密码对站点进行简单的访问控制。其中指的是加密算法,支持的有算法。 nginx的basic auth配置由ngx_http_auth_basic_module模块提供,对HTTP Basic Authentication协议进行了支持,用户可通过该配置设置用户名和密码对web站点进行简单的访问控制。 basic auth配置...

    canger 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<