创建自己的小工具

发表于 2023-05-12 02:27:16
更新于 2024-04-18 13:33:37
Node.js

从 hexo 迁移到 vitepress 后,没有发现可以快速创建 post 的命令。

手动创建,如果想要精确的设置一个创建时间还是有一点小繁琐的,所以需要一个小脚本帮助我来快速的创建文章的文件。

其实,很多时候如果想太多,可能反而会拖累自己,比如我会想,如果创建的文章同名了怎么办?要不要用一些脚手架的三方库来做?要不要发布成库全局安装?

后来转念一想,这些问题其实都不是问题。

如果创建文章不小心由于同名覆盖了我原来的文章,我完全可以通过 git 的历史找回来。

至于脚手架,也不需要那么重,毕竟用户是我自己,我只需要解决自己的需求就可以了。

实际脚本也非常简单,只需要内置库即可,dayjs 是本来自定义主题时用到的库,顺手就用来获取时间了。

不需要发布成包或者打包成库全局安装,就在我自己的 blog 项目下即可,需要时我只需要通过命令行去调用创建对应的文件。

javascript
const path = require('path')
const fs = require('node:fs/promises')
const dayjs = require("dayjs");

!(async function() {
  const dir = path.resolve(__dirname, process.argv[2])
  const filename = process.argv[3] + '.md'
  
  await fs.writeFile(`${dir}/${filename}`, `---
title: ${process.argv[3]}
date: ${dayjs().format('YYYY-MM-DD HH:mm:ss')}
tags: []
layout: post
cover:
  image: ***
---
  `)
})()

有时候,真的不需要想太多,代码是可以迭代的。每次解决对应的需求和痛点即可。

遇到的问题或收获

发现 node 的内置库出现了很多的 node:*/promise 形式的包,当然比起以前的 callback 形式好了很多,但是不清楚是什么时候引入的。

可以通过 progress.argv 获取脚本是怎么被命令行调用的。

模版字符串,如果不想有多余的换行就必须顶格写,有点破坏原来的代码风格,虽然不是大问题,但可以看看有什么解决方案。