hugo博客搭建后,博客写作和发布流程较为复杂,因为是静态博客,每次都需要重新编译。不过,通过GitHub action,我们已经把这步交给GitHub去做了。我们只需提交即可触发自动编译并发布到你部署的平台,我目前托管在GitHub pages,vercel,render,netlify这四个平台上,不过8月下旬起vercel提供*.vercel.app域名已经被墙,我开启了独立域名 https://zhjin.eu.org 。
现在我们的整体写作流程如下:
hugo new posts/文章名.md
新建一篇文章。这个过程稍微还是繁琐了一些,因此,怎么优化这个这个流程,把写作体验提升变得尤为重要。
Markdown编辑器,市面上口碑不错的有typora,vscode,obisidian。不过typora从2021-11-23号起已经开始收费。obisidian也是最近才发现的一款神奇,使用体验下来也非常不错。
obisidian是什么,这里简单介绍一下。
它可以智能生成文档关系图谱,记忆保存你上次打开的文件位置,界面简洁,文件夹式管理,不同文件可以链式关联,拥有丰富的插件。如果想要跨设备云同步,可以借助第三方云盘,比如坚果云。
借助obisidian的插件QuickAdd,我们可以把新建文章的步骤进行优化,做成一个快捷指令。
obs_sctipts
,里面添加新建脚本NewBlog.js
,内容如下:const util = require("util");
const child_process = require("child_process");
const exec = util.promisify(child_process.exec);
//新建博客命名,这里以年月日时分秒命名,可自定义修改
function getCreateTimeAsFileName() {
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1;
var day = d.getDate();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
var time = year + "-" + month +"-" + day + "day" + hour + "h" + minute + "m" + second + "s";
return time;
}
// execute command function
async function executeCommand() {
const fileName = getCreateTimeAsFileName() + ".md";
const { stdout, stderr } = await exec("hugo new posts/" + fileName, {
cwd: app.fileManager.vault.adapter.basePath,
});
console.log("stdout:", stdout);
console.log("stderr:", stderr);
if (stdout) {
new Notice("New Blog Created[" + fileName + "]");
} else {
new Notice("New Blog Create Faild. " + stderr);
}
}
module.exports = async function (context, req) {
await executeCommand();
};
Manage Macros
-Configure
进行设置,User Scripts
找到脚本NewBlog
脚本,add添加。完成。 QuickAdd:新建博客
,点击就可看到新建博客成功。 Hugo 博客写作最佳实践 https://zhuanlan.zhihu.com/p/497671233