教你如何搭建一个自动化构建的博客

2023-10-26

前言

记得在1年之前搭建了一个个人主页的博客,但是当时功力尚浅,每次写博客,都是自己手动写html,这样会变得非常的繁琐,现在很多人用主流的wordpress,hexo之类的快速搭建一个平台,那些工具确实方便,但是对于主题以及一些额外的排版,就显得非常的麻烦,本文致力于教你如何搭建一个个性化,并且自动化构建的博客。

开始

完成后的博客展示: http://yifenghua.win/

github地址: https://github.com/hua1995116/myblog (喜欢的点个star哈)

本平台也是基于.md文件构建成html的自动化流程,因为现在主流的编写方式就是用.md文件来抒写,所有问题就归结为,如何让.md文件转化成.html文件。那问题就变得非常的简单了,现在市面上有很多md转成html的工具,markdown,marked,node-markdown等等。今天我就用marked来搭建我们的自动化构建博客。

Go on

Marked使用方法非常的简单。


var marked = require('marked');
console.log(marked('I am using __markdown__.'));
// Outputs: <p>I am using <strong>markdown</strong>.</p>

假设我们的git.md是这样的:

st = status
co = checkout
cob = checkout -b
br = branch
bra = branch -a
ci = commit
cim = commit -m
cia = commit --amend
re = reset
rb = rebase
rbi = rebase -i
rbim = rebase -i origin/master
rbid = rebase -i origin/devlop
rbc =erebase --continue
rba = rebase --abort
fe = fetch
psom = push origin master
puom = pull origin master

如果是想要输出文件的形式:


const fs = require('fs')  
const marked = require('marked') 
fs.readFile('./notes/git.md', 'utf8', (err,markContent)=>{  
  if(err){  
    throw err  
  }else{   
    fs.writeFile('./git.html',marked(markContent.toString()), err=>{  
      if(err){  
        throw err  
      }else{  
        console.log("success")  
      }  
    }) 
  }  
})   

既然我们已经知道了md文件如何转成html,但是我们发现,这样生成的文件是没有样式的,所以我们需要去找一个样式的库,我现在用的是github-markdown.css 还有一个代码高亮的库,prism 。引用prism.css和prism.js ,就可以发现我们打开的html,就有了样式,还有代码高亮的操作。

因为我们到,github-markdown-css,prism分别取下载对应的css和js,然后引入。

经过上述操作后,我们的文件应该是这样的:


<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="../css/github-markdown.css">
<link rel="stylesheet" type="text/css" href="../css/prism.css">
</head>
<body>
<pre><code>
st = status
co = checkout
cob = checkout -b
br = branch
bra = branch -a
ci = commit
cim = commit -m
cia = commit --amend
re = reset
rb = rebase
rbi = rebase -i
rbim = rebase -i origin/master
rbid = rebase -i origin/devlop
rbc =erebase --continue
rba = rebase --abort
fe = fetch
psom = push origin master
puom = pull origin master
</code></pre>
<script type="text/javascript" src="../js/prism.js"></script>
</body>
</html>

但是这一步是我们手动写上的。

Next

因为我的需要一个模板机制,来帮我们手动生成一个文件。
Tempale.html


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <title></title>
    <link rel="stylesheet" type="text/css" href="../css/github-markdown.css">
    <link rel="stylesheet" type="text/css" href="../css/prism.css">
    <!-- <link type="text/css" rel="stylesheet" href="./css/shCoreEclipse.css"/> -->
</head>
<body scroll="no">
    <div class="markdown-body">
        @markdown
    </div>

<script type="text/javascript" src="../js/prism.js"></script>
</body>
</html>

再来重新配置我们的运行文件。


const fs = require('fs')  
const marked = require('marked') 
fs.readFile('./template1.html', 'utf8', (err, template)=>{  
  if(err){  
    throw err  
  }else{  
    fs.readFile('./notes/git.md', 'utf8', (err,markContent)=>{  
    if(err){  
      throw err  
    }else{   
      template = template.replace('@markdown', marked(markContent.toString()))
      fs.writeFile('./git.html',  template, err=>{  
        if(err){  
          throw err  
        }else{  
          console.log("success")  
        }  
      })
    }  
  })
  }
})

可以看到一个生成后的文件,已经完整了。

扩展

分页:再此基础上我又对其进行了扩展,增加了一个分页的功能。

文件目录:.md 文件的目录(待开发)

使用

git clone https://github.com/hua1995116/myblog

将需要写的.md文件放到notes目录下,


// 安装依赖
npm install
// 编译
node index.js
// 本地查看
node http.js

其他具体的样式你可以自行配置,和普通写html,css无差异。

编译后的html代码在html目录下,将其放到你的站点下,或者github-pages上即可。
每次写完新的博客,只要运行下index.js即可发布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教你如何搭建一个自动化构建的博客 的相关文章

随机推荐

  • 面向对象高级3-内部类&枚举&泛型

    1 内部类 回顾 之前学了类的四个成员 分别是成员变量 成员方法 代码块 构造器 现在这是第五个成员 内部类 前三个作了解 第四个重点学习 内部类的应用场景 场景 当一个类的内部 包含了一个完整的事物 且这个事物没有必要单独设计时 就可以把
  • 路由中的mata

    一 定义 meta简单来说就是路由元信息 也就是每个路由身上携带的信息 二 使用 1 面包屑 path index name index meta keepAlive true 需要缓存 title 首页 components gt imp
  • linux 一个用户进入另外一个用户的家目录

    a userb use b 用户 cd home a 只有查看权限chmod 755 home a 转载于 https blog 51cto com wsxxsl 2096507
  • Python之区块链简单记账本实现

    在上一篇 Python之区块链入门 中讲述了区块链的基础知识 并用Python实现了区块和区块链的结构 在本篇中 将基于上面的内容实现一个简单的记账本功能 记账本的功能如下 实现基本的收支记录 计算当前余额 对收支情况做简单统计分析 账单记
  • android studio 导入module作为lib使用

    android studio 导入module作为lib使用 1 将 android module导入 android project 中 2 在要作为lib导入的module 的build gradle文件中添加一行 apply plug
  • 若依前后端分离版3、用户角色权限和动态菜单

    文章目录 一 用户角色和权限 1 前端 2 后端 一 用户角色和权限 1 前端 我们通过登陆 F12进行查看发现还有getinfo和getRouters方法 我们发现若依在页面跳转的时候都会出现这两个方法 这其实就是我们在路由里边配置的东西
  • 汽车智能座椅系统

    概述 自动驾驶领域日渐成熟 将催生一些新应用场景 如休闲 娱乐 社交和健康等 传统的座椅控制系统无法满足人们新的需求 更安全 更舒适 智能化及健康化体验将成为未来智能座椅的方向 恒润凭借汽车电子技术的积累 能够提供智能汽车座椅的解决方案 为
  • 笔记

    零散个人笔记 书籍已出版 完整版 淘宝 京东 当当有售 1 tensorflow源码完整下载方法 git clone recurse submodules https github com tensorflow tensorflow git
  • 作业 从外到内:一次完整的渗透测试!作业

    9th 一 环境准备 Windows10 1709地址 WindowsServer2016 x64 修改了密码 原密码 lonelyor org UbuntuServer2004 x64 UbuntuServer1604 x64 pfsen
  • Qt实现coturn穿透客户端,coturn服务器搭建

    目录 coturn简介 coturn服务器搭建 coturn服务验证 qt实现coturn穿透 NAT类型是否可以穿透 coturn简介 Coturn集成了stun turn协议 实现NAT检测 穿透就需要通过stun协议 NAT检测无法进
  • 渗透测试核心思路-边界突破

    概述 渗透测试的目标可以是单个主机 也可以是整个内网 在实战中 比如最近如火如荼的HW行动 更多的是对一个目标的内网进行渗透 争取获得所有有价值的资产 完整的内网渗透涉及的步骤如下图所示 我们总是先通过对外提供服务的 防守最薄弱的主机打进去
  • c++:继承(超详解)

    目录 一 什么是继承 二 继承的格式 继承的总结 二 子类和父类 基类和派生类 1 子类和父类的相互赋值 2 同名的成员变量 3 同名成员函数 三 子类中默认的成员函数 1 构造函数 2 析构函数 3 拷贝构造 4 赋值运算符重载 四 单继
  • 数组中和为0的三个数

    给你一个整数数组 nums 判断是否存在三元组 nums i nums j nums k 满足 i j i k 且 j k 同时还满足 nums i nums j nums k 0 请你返回所有和为 0 且不重复的三元组 注意 答案中不可以
  • 正六边形旋转实现

    1 行内样式 div style background none div
  • Jenkins :添加node权限获取凭据、执行命令

    拥有Jenkins agent权限的账号可以对node节点进行操作 通过添加不同的node可以让流水线项目在不同的节点上运行 安装Jenkins的主机默认作为master节点 1 Jenkins 添加node获取明文凭据 通过添加node节
  • UDF、UDAF和UDTF开发模板

    0 背景 Hive是一种构建在Hadoop上的数据仓库 Hive把SQL查询转换为一系列在Hadoop集群中运行的MapReduce作业 是MapReduce更高层次的抽象 不用编写具体的MapReduce方法 Hive将数据组织为表 这就
  • 树莓派4B系统搭建---2021-8-12

    文章目录 前言 一 系统安装 1 下载系统 2 制作系统SD卡 开启SSH 树莓派系统配置 网络配置 二 使用步骤 1 引入库 2 读入数据 总结 前言 树莓派 英语 Raspberry Pi 是基于Linux的单片机电脑 由英国树莓派基金
  • 换脸视频怎么做出来的?AI视频换脸教程【完整版手把手】免费AI换脸视频工具制作过程详解

    上期分享了wav2lip GFPGan图片说话转视频的文章 超写实虚拟数字人再升级 Wav2Lip GFPGAN完整版教程及效果视频评测 手把手 baoxueyuan的博客 CSDN博客 部分饱子好奇视频如何换脸 因为近期视频换脸太火爆了
  • vs2012远程调试(可用)

    vs2012远程调试功能的改进 分类 vs2012 vs远程调试 2014 01 22 17 49 75人阅读 评论 0 收藏 举报 vs2012 vs 不知道大家有没有遇到过这种情况 刚开发完的程序 明明在本机能够好好的运行 可是部署到服
  • 教你如何搭建一个自动化构建的博客

    前言 记得在1年之前搭建了一个个人主页的博客 但是当时功力尚浅 每次写博客 都是自己手动写html 这样会变得非常的繁琐 现在很多人用主流的wordpress hexo之类的快速搭建一个平台 那些工具确实方便 但是对于主题以及一些额外的排版