前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js 用一个小脚本实现新建文章模板

Node.js 用一个小脚本实现新建文章模板

作者头像
Cesirdy
发布2023-05-29 14:04:33
4260
发布2023-05-29 14:04:33
举报
文章被收录于专栏:CSD的一些笔记

之前为了偷懒写的小脚本,类似于 hexo new 的小指令。

首先过一遍代码:

代码语言:javascript
复制
const fs = require('fs');

// 获取命令行传入的参数
const args = process.argv.slice(2);

function generatePost(title) {

  // 处理标题格式
  function capitalizeFirstWordLetter (str) {
    return str.charAt(0).toUpperCase() + str.slice(1);
  };

  const sentenceCaseTitle = capitalizeFirstWordLetter(title);
  const formattedTitle = sentenceCaseTitle.split('-').join(' ');

  // 获取当前日期和时间
  const date = new Date();
  const Y = date.getFullYear();
  const M = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;
  const D = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();
  const h = date.getHours() < 10 ? `0${date.getHours()}` : date.getHours();
  const m = date.getMinutes() < 10 ? `0${date.getMinutes()} ` : date.getMinutes();
  const s = date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds();
  const time = `${Y}-${M}-${D} ${h}:${m}:${s}`;

  // 构建 frontMatter
  const frontMatter = `---
title: "${formattedTitle}"
date: "${time}"
categories:
  - 
---

here

---
`

  // 将 frontMatter 写入文件,路径按需修改
  fs.writeFile(`./src/sources/posts/${title}.md`, frontMatter, (err) => {
    if (err) throw err;
    console.log(`Created ${title}.md!`);
  });
}

generatePost(args[0]);

很简单的小脚本,看一下注释应该就能理解。

然后我们要执行它,有很多方法,可以直接用 node 命令来执行脚本:

代码语言:javascript
复制
node ./scripts/new-post.js new-blog-post

但是每次都要输入路径就比较繁琐,这里推荐将命令直接写入 package.json,然后用 npm run 来执行。 例如:

代码语言:javascript
复制
{
  //...
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "new": "node ./scripts/new-post.js",
  },
  //...
}
代码语言:javascript
复制
npm run new new-blog-post

然后就会生成一个这样的 .md 文件:

代码语言:javascript
复制
---
title: "New blog post"
date: "2023-05-17 21:44:17"
categories:
  - 
---

here

---

其中这个被两个分割线包围的 here 是我用来识别并输出成首页摘要的,很笨的方法,嗯。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档