用Publish创建博客(一)—— 入门

2022-07-28 12:46:10 浏览数 (1)

用Publish创建博客(一)—— 入门

本系列一共三篇文章。如想获得更好的阅读效果可以访问我的博客 www.fatbobman.com[1] 我的博客也是用Publish创建的。

Publish[2]是一款专门为Swift开发者打造的静态网站生成器。它使用Swift构建整个网站,并支持主题、插件和其他大量的定制选项。作为Swift开发者,通过Publish创建站点的开发过程和体验同开发其他程序很类似。

开篇

开发者John Sundell

Publish的开发者John Sundell这些年一直致力于发表关于Swift的高质量文章、播客和视频。他的作品大多都发布在其独立运营的 Swift by Sundell[3]上。他开发了Publish[4]用以创建并管理自己的站点。

在开发Publish的过程中,他还开源了其他大量的基本库,比如Ink[5](高效的Markdown解析器)、Plot[6](创建HTML、XML、RSS的DSL)、Sweep[7](高效的字符串扫描库)、Codextended[8](Codable增强)等。它们不仅一起构建了强大的Publish,并且在各自的领域也是极为出色的开源库。

我为什么使用Publish

我在一年前恢复自己的个人博客[9]时使用的是Hexo。Hexo在国内有非常好的群众基础,网上有大量优秀的教程,也有非常多的开发者贡献了自己创作的各种主题和插件。尽管Hexo让我相当满意,但由于我主要使用的语言是Swift,且对JavaScript非常不熟悉,因此想要对Hexo做更深入的定制或修改很困难。

作为开发者(即使是业余的),总希望对自己的项目有更全面的掌控,因此完全由Swift开发的Publish就成为了我的首选。

随着使用Publish对肘子的Swift记事本[10]重建过程的深入,我感觉自己做出了正确的选择。Publish让我可以用开发普通app的思路和逻辑来创建站点,高效地完成我想要的各种定制和改动。

写本文的原因

截至落笔时,Publish已经在Github上获得了3.1K的好评。但网络上对Publish的介绍并不多,尤其欠缺关于主题定制、插件开发方面的资料和交流。在Github上搜索相关的插件和主题的结果数量也非常有限。

造成上述的情况固然有Publish诞生时间较短、使用量不大,Swift圈子较小等原因,但我认为下面的情况也加剧了这一局面的形成:由于不同于其他的静态网站生成器,在Publish项目中,开发者可以用短小的代码实现各种功能。这种碎片化的代码其实是不利于分享且并不容易被搜索;另外,由于Publish中的主题和网站的功能具体实现绑定的较深,单独分享的主题的利用度也较低。

但Publish的这种特质也恰恰是其吸引人之处。

有鉴于此,我将用三篇文章(入门、主题开发、插件开发)完成对Publish的简绍,也希望国内的Swift开发者或爱好者们可以更多的了解和使用这个优秀的工具。

为了让大家能够快速上手,我已将肘子的Swift记事本[11]站点所用的代码(包括主题、自定义插件等)放置在Github[12]上,方便大家通过代码更快的了解和掌握Publish。

快速使用入门

如何安装Publish

同大量的其他静态网站生成器一样,Publish提供了CLI。你可以通过命令行快速的完成创建模板、内容更新、远程发布等一系列操作。Publish目前可以运行在Mac和Linux上,由于其代码对操作系统的依存度极低,估计其后也出现在Windows平台上。

Mac下通过brew安装
代码语言:javascript复制
$brew install publish
源代码安装
代码语言:javascript复制
$git clone https://github.com/JohnSundell/Publish.git$cd Publish$make

创建你的第一个项目

让我们来创建一个新的Blog项目

代码语言:javascript复制
$mkdir myblog$cd myblog$publish new

Publish将在myblog目录中创建我们所需的项目模板。它的基本构成大概如下:

代码语言:javascript复制
|-- myblog|   |-- Content|           |–– posts|                 |–– first-post.md|                 |–– index.md|           |–– index.md|   |-- Resources|   |-- Sources|           |–– Myblog|                  |–– main.swift

•Content在此放入你要在网站发布的文章、页面等使用markdown编写的文件。•Resources项目主题需要的一些资源,比如css,图片等,目前为空。在你进行第一发布后,可以看到它包含了默认的FoundationTheme的styles.css文件。•Source描述网站的代码。在main.swift中定义了网站的基本属性、创建工作流等。

编译及运行

Swift是编译型语言,因此你的站点的代码在每次修改之后,都需在本机编译并运行才能完成内容的生成工作,好在这一切都只需要一条命令。

我们让Publish完成上述工作并启动内置的Web Server供我们浏览新创建的项目。

代码语言:javascript复制
$publish run

第一次运行,Publish会自动从Github上获取所需的其他库,请稍等几分钟。

代码语言:javascript复制
$publish run............Publishing Myblog (6 steps)[1/6] Copy 'Resources' files[2/6] Add Markdown files from 'Content' folder[3/6] Sort items[4/6] Generate HTML[5/6] Generate RSS feed[6/6] Generate site map✅ Successfully published Myblog


	

0 人点赞