Files
fuwari/scripts/new-post.js
二叉树树 bb4aacb07b style: biome
优化访客统计动画逻辑
2026-01-01 21:39:51 +08:00

62 lines
1.5 KiB
JavaScript

/* This is a script to create a new post markdown file with front-matter */
import fs from "fs";
import path from "path";
function getDate() {
const today = new Date();
const year = today.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, "0");
const day = String(today.getDate()).padStart(2, "0");
const hours = String(today.getHours()).padStart(2, "0");
const minutes = String(today.getMinutes()).padStart(2, "0");
const seconds = String(today.getSeconds()).padStart(2, "0");
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;
}
const args = process.argv.slice(2);
if (args.length === 0) {
console.error(`Error: No filename argument provided
Usage: npm run new-post -- <filename>`);
process.exit(1); // Terminate the script and return error code 1
}
let fileName = args[0];
// Add .md extension if not present
const fileExtensionRegex = /\.(md|mdx)$/i;
if (!fileExtensionRegex.test(fileName)) {
fileName += ".md";
}
const targetDir = "./src/content/posts/";
const fullPath = path.join(targetDir, fileName);
if (fs.existsSync(fullPath)) {
console.error(`Error: File ${fullPath} already exists `);
process.exit(1);
}
// recursive mode creates multi-level directories
const dirPath = path.dirname(fullPath);
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath, { recursive: true });
}
const content = `---
title: ${args[0]}
published: ${getDate()}
description: ''
image: ''
draft: false
lang: ''
---
`;
fs.writeFileSync(path.join(targetDir, fileName), content);
console.log(`Post ${fullPath} created`);