加载中...
作者头像

Maple

2026-01-29

一键模板测试

开心

测试一键生成脚本

const fs = require('fs');
const path = require('path');

// 笔记文件目录
const NOTES_DIR = path.join(__dirname, '..', 'src', 'content', 'notes');

// 生成数字文件名
function generateNumberedFilename() {
  // 读取目录下的所有文件
  const files = fs.readdirSync(NOTES_DIR);

  // 过滤出数字命名的文件
  const numberedFiles = files.filter(file => {
    return /^\d+\.md$/.test(file);
  });

  // 找出最大的数字
  let maxNumber = 0;
  numberedFiles.forEach(file => {
    const number = parseInt(path.parse(file).name);
    if (number > maxNumber) {
      maxNumber = number;
    }
  });

  // 生成新的数字文件名
  const newNumber = maxNumber + 1;
  return `${newNumber}.md`;
}

// 生成笔记文件
function generateNoteFile() {
  // 获取命令行参数作为文件名
  const args = process.argv.slice(2);
  let filename;

  if (args.length > 0) {
    // 使用命令行参数作为文件名
    const name = args.join(' ');
    // 清理文件名,移除可能导致问题的字符
    const sanitizedName = name.replace(/[<>"|?*:]/g, '');
    filename = `${sanitizedName}.md`;
  } else {
    // 生成数字文件名
    filename = generateNumberedFilename();
  }

  const filePath = path.join(NOTES_DIR, filename);

  // 生成当前日期
  const currentDate = new Date().toISOString().split('T')[0];

  // 生成 frontmatter
  const frontmatter = `---
title: "动态"
description: "介绍。"
createdAt: ${currentDate}
tags: ["示例", "技术", "学习"]
mood: "启发"
location: "线上"
images:
  - src: "@assets/uploads/note.jpg"
    alt: "示例图片"
imageAlt: "示例技术概念图"
---

`;

  // 写入文件
  fs.writeFileSync(filePath, frontmatter);
  console.log(`生成笔记文件: ${filePath}`);
}

// 确保目录存在
if (!fs.existsSync(NOTES_DIR)) {
  fs.mkdirSync(NOTES_DIR, { recursive: true });
}

// 运行生成函数
generateNoteFile();

评论

内容已更新

检测到文章内容有变化,已为您高亮差异部分。