写一个vitepress新建文章脚本,自动化创建链接,别再手写了!

这两天用xx云笔记写东西感觉不方便,限制两个登陆设备。所以简单搭了一个 Vitepress 的环境,用来写点东西,内容也能直接上传到 Git。

但是使用过程中创建文章还得加上连接忒麻烦,所以写了个脚本,跟大家分享一下,做个参考。

修改 config.mts

/docs/.vitepress 下创建 menu.json 文件夹

json 复制代码
[
  {
    "text": "20250418-测试",
    "link": "/20250418-测试"
  }
]

修改 /docs/.vitepress/config.mts 文件

javascript 复制代码
import Menu from "./menu.json"

export default defineConfig({
    themeConfig: {
        sidebar: [
            {
                text: 'Examples',
                items: Menu
            }
        ],
    }
})

编辑脚本

创建 scripts/create-post.js 文件

javascript 复制代码
const fs = require('fs');
const path = require('path');
const readline = require('readline');

// 获取命令行输入
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('请输入文章名: ', (articleName) => {
    // 格式化日期和文章名
    const date = new Date();
    const year = date.getFullYear();
    let month = date.getMonth() + 1; // 月份从0开始,所以需要加1
    let day = date.getDate();

    // 确保月份和日期是两位数
    month = month < 10 ? '0' + month : month;
    day = day < 10 ? '0' + day : day;

    // 创建文件名
    const fileName = `${year}${month}${day}-${articleName}`;
    const filePath = path.join(__dirname, '../docs', `${fileName}.md`);

    // 写入空文件
    fs.writeFile(filePath, '', (err) => {
        if (err) throw err;
        console.log(`"${fileName}.md" 已经创建在 docs 文件夹下.`);
    });

    // 更新 menu.json 文件
    const menuFilePath = path.join(__dirname, '../docs/.vitepress/menu.json');
    fs.readFile(menuFilePath, 'utf8', (err, data) => {
        if (err) throw err;

        const menuItems = JSON.parse(data);
        const newItem = { text: fileName, link: `/${fileName}` };

        // 添加新项
        menuItems.push(newItem);

        // 将更新后的数据写回到 menu.json 文件
        fs.writeFile(menuFilePath, JSON.stringify(menuItems, null, 2), 'utf8', (err) => {
            if (err) throw err;
            console.log(`新文章链接已添加到 menu.json 文件中.`);
        });
    });

    rl.close();
});

package.json 加上这个指令脚本就行了

json 复制代码
{
  "scripts": {
    "docs:dev": "vitepress dev docs",
    "docs:build": "vitepress build docs",
    "docs:preview": "vitepress preview docs",
    "create": "node scripts/create-post.js"  // 新加指令
  },
  "devDependencies": {
    "vitepress": "^1.6.3"
  }
}

实测好使,折腾呗~

相关推荐
TeleostNaCl12 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
前端大卫13 小时前
为什么 React 中的 key 不能用索引?
前端
你的人类朋友13 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
小李小李不讲道理15 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻15 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
cdming15 小时前
Node.js 解释环境变量的定义、作用及在Node.js中的重要性,区分开发、测试、生产环境配置需求。
node.js
mapbar_front16 小时前
在职场生存中如何做个不好惹的人
前端
牧杉-惊蛰16 小时前
纯flex布局来写瀑布流
前端·javascript·css
一袋米扛几楼9817 小时前
【软件安全】什么是XSS(Cross-Site Scripting,跨站脚本)?
前端·安全·xss
向上的车轮17 小时前
Actix Web适合什么类型的Web应用?可以部署 Java 或 .NET 的应用程序?
java·前端·rust·.net