写一个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"
  }
}

实测好使,折腾呗~

相关推荐
霍理迪2 小时前
CSS——背景样式以及雪碧图、渐变
前端·css
jump_jump5 小时前
基于 Squoosh WASM 的浏览器端图片转换库
前端·javascript·性能优化
小二·8 小时前
前端监控体系完全指南:从错误捕获到用户行为分析(Vue 3 + Sentry + Web Vitals)
前端·vue.js·sentry
阿珊和她的猫10 小时前
`require` 与 `import` 的区别剖析
前端·webpack
谎言西西里10 小时前
零基础 Coze + 前端 Vue3 边玩边开发:宠物冰球运动员生成器
前端·coze
努力的小郑10 小时前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程
GIS之路10 小时前
GDAL 实现数据空间查询
前端
OEC小胖胖11 小时前
01|从 Monorepo 到发布产物:React 仓库全景与构建链路
前端·react.js·前端框架
2501_9447114311 小时前
构建 React Todo 应用:组件通信与状态管理的最佳实践
前端·javascript·react.js
困惑阿三11 小时前
2025 前端技术全景图:从“夯”到“拉”排行榜
前端·javascript·程序人生·react.js·vue·学习方法