开发了一个本地 CMS(内容管理系统)

什么是 local-cms

local-cms 顾名思义,就是"本地的内容管理系统"。

它是在开发 vitepress 工具 vitepress-helper 的过程中,为了进一步完善功能,实现对内容更便捷的管理而开发的。

local-cms 除了能够配合 VitePress 使用,也适合其他使用 markdown 管理文件的使用场景。

不过因为目前默认搭配 VitePress 使用,所以 markdown 编辑器的渲染样式为 VitePress 的文档主题样式,后续会考虑增加更多的主题风格,类似掘金编辑器那样,让大家能够按需使用。

为什么开发

CMS 系统有很多已经成熟的项目,直接搭配使用就行,为何要再造一个轮子呢?

因为,据我目前了解大多数 CMS 系统需要服务器和数据库来搭配对内容管理和存储。 这种使用方式比较成熟,但对于当前的使用场景来说体量过重了,增加额外的开发成本、使用成本。另外和 VitePress 的使用体验也有所割裂,而且通过 CMS 提供的接口来获取内容对 SEO 也不够友好。

最主要的是,比较好用的 CMS,它们往往还需要额外付费订阅才能使用。

还有一种基于 GitCMS 管理系统,相比较更适合,但也存在使用成本和体验的问题。当然这并不是这些 CMS 系统的问题,只是使用场景没有契合。

所以我认为在使用 VitePress 的场景下需要的是一个使用简单,没有太多概念和配置,甚至用起来像一个 markdown 编辑器的本地 CMS

功能实现

因为计划的使用场景为辅助管理本地内容,所以功能十分简单。

cms

这个CMS(内容管理系统)是一个基于 Express 的服务器,主要提供了以下功能:

  1. 设置和获取目录:默认目录为"docs",可以通过命令行参数或API接口来设置新的目录。

  2. 获取目录下所有文件和文件夹:提供了一个API接口,可以获取指定目录下的所有文件和文件夹,支持递归获取子目录下的所有文件和文件夹。

  3. 获取所有md文件:通过接口,可以获取所有的Markdown文件。

  4. 读取单个文件:通过接口,可以读取指定路径的文件内容。

  5. 新建文件和目录:通过接口,可以在指定目录下新建文件或目录。

  6. 修改文件:通过接口,可以更新指定文件的内容。

  7. 删除文件和目录:通过接口,可以删除指定的文件或目录。

  8. 重命名文件和目录:通过接口,可以重命名指定的文件或目录。

UI

UI 使用了 ant-design-vue 实现。通过请求 Express 提供的接口来进行相应的交互功能。

初始化向导

为了方便快速上手使用,提供了一个命令行工具。

运行时首先会让你选择要执行的操作:

  1. 在当前目录添加 local-cms 来管理内容。
  2. 新建一个基于 vitepress 管理的 CMS 的项目。

第一个选项,适合在现有项目中添加 local-cms。 工具会自动安装并在项目的 package.json 中添加 cms 的运行脚本。

第二个选项,适合开启一个全新的文档项目。工具会预设一些项目基本信息的填写。

这个初始化向导工具,不仅能够兼容既有项目,还能够开箱即用的快速开始一个新的项目。

使用

初始化向导

local-cms 提供了一个初始化向导。你可以选择以下方式来使用初始化向导:

npx

可以通过 npx 直接运行初始化引导。

shell 复制代码
npx @huyikai/local-cms init

全局安装依赖

全局安装 local-cms, 然后通过 cms 命令运行初始化引导。

shell 复制代码
npm i @huyikai/local-cms -g
cms init

手动安装

local-cms 安装到项目的开发依赖中。

sh 复制代码
npm i @huyikai/local-cms -D

然后修改 package.json 文件,添加 cms 命令。

json 复制代码
{
  "scripts": {
    "cms": "node node_modules/@huyikai/local-cms/cms.js docs"
  }
}

运行 npm run cms

结尾

欢迎大家尝试使用 local-cms ,并提出宝贵的意见和建议。

以上是目前为止想跟大家分享的关于 local-cms 的所有内容,这个工具我平时一直在使用,在使用过程中也在不断思考有哪些优化的可能,也欢迎感兴趣的伙伴参与开源。

仓库地址:github.com/huyikai/loc...

相关推荐
gqkmiss22 分钟前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247552 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
刘大辉在路上3 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
m0_748255023 小时前
前端常用算法集合
前端·算法
真的很上进3 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203983 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2344 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1234 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
追逐时光者4 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql