当前位置: 首页 > news >正文

记录一次飞书文档转md嵌入vitepress做静态站点

记录一次飞书文档转md嵌入vitepress做静态站点

  • 需求
    • 配置飞书机器人
    • 搭建应用
    • 国际化配置
    • 样式

需求

使用大佬写的插件来做。
需要一个富文本编辑器,富文本编辑器编辑完成后,能显示为静态站点,并且能返回自己的系统的目标路由。产品问我能不能把飞书的文档转换出来,并且给我发了一篇文章。
产品发的文档
但是后面完成后,发现这个文档其实有点老旧,要看feishu-pages插件作者的最新文章。
最新文档

配置飞书机器人

飞书开放后台

新建一个飞书应用,然后添加机器人功能

在这里插入图片描述
开通必要权限。

  • docx:document:readonly
  • wiki:wiki:readonly
  • drive:drive:readonly
  • board:whiteboard:node:read
    在这里插入图片描述
    在这里搜索权限并且开通
    在这里插入图片描述

在飞书里面新建一个群聊名字你随意弄比如 Feishu Pages

群聊中点击设置
在这里插入图片描述
在这里插入图片描述
添加你的应用,在此之前应用要发布。

在你的知识库中,点击设置
在这里插入图片描述
在这里插入图片描述

添加管理员,将你的群聊,添加进来。
在页面的链接中,找到知识库id
在这里插入图片描述
到此,配置完成
你可以获取到知识库id,应用的信息
在这里插入图片描述

搭建应用

feishu-pages的作者提供了示例站点,我们可以拿过来用,也可以自己搭建。
新建一个vitepress应用。

https://vitepress.dev/zh/guide/getting-started#installation

npx vitepress init

在这里插入图片描述
在这里插入图片描述
根目录新建一个.env文件,然后填入你的
APP_ID
APP_SECRET
FEISHU_SPACE_ID:知识库id

FEISHU_APP_ID=
FEISHU_APP_SECRET=
FEISHU_SPACE_ID=
FEISHU_LOG_LEVEL=1
OUTPUT_DIR=
BASE_URL=/
ROOT_NODE_TOKEN=
URL_STYLE=
SKIP_ASSETS=

然后安装feishu-pages

npm i feishu-pages -D
{"scripts": {"docs:dev": "vitepress dev","docs:build": "vitepress build","docs:preview": "vitepress preview","getdocs": "feishu-pages"},"devDependencies": {"feishu-pages": "^0.7.6"}
}

然后写个 "getdocs": "feishu-pages"
我们来执行下。

npm run getdocs

在这里插入图片描述

如果你对目录有要求,可以配置

在这里插入图片描述
比如你想要根目录下,
在这里插入图片描述
在这里插入图片描述

这里生成了docs.json文件,可以解析这个文件来生成侧边栏。
插件作者有代码示例

https://github.com/longbridge/feishu-pages/blob/main/website/.vitepress/config.mts

直接拿来用。
先安装下vitepress包

npm i vitepress -D

安装下 markdown-it-mathjax3 支持数学公式。

npm i markdown-it-mathjax3 -D

在这里插入图片描述
当然如果你不用数学公式的话,不用安装,将配置项的math注释掉
在这里插入图片描述

npm run docs:dev

执行下,跑起来。修改配置项。

因为我们配置.env
在这里插入图片描述
所以vitepress配置要对应。
在这里插入图片描述
跑起来后是404,因为docs目录下没有index.md,默认首页为index.md。因为配置文件指定来srcDir为docs目录。

在这里插入图片描述
在这里插入图片描述
我们可以手动复制一份进去,也可以每次拉docs的时候,cp一份。
"getdocs": "feishu-pages && cp index.md docs/"
现在首页正常了。

配置下nav
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进来可以正常访问了。

国际化配置

需要我们的知识库文档改成这样,根据语言。
在这里插入图片描述
在这里插入图片描述
slug是配置该文档/目录的名称。我们执行下
npm run getdocs
在这里插入图片描述
目录有了,想要切换的时候保持一致,还需要这样,中文英文的文件标题一致

在这里插入图片描述

在这里插入图片描述

这样生成的结构是这样的
在这里插入图片描述

配置参考
https://vitepress.dev/zh/guide/i18n

样式

现在的样式和飞书文档里面还是不一样的
在这里插入图片描述
我复制的作者的例子。因为现在还没有配置样式。
这里我直接抄的是插件作者demo的。

{"scripts": {"docs:dev": "vitepress dev","docs:build": "vitepress build","docs:preview": "vitepress preview","getdocs": "feishu-pages && cp index.md docs/"},"devDependencies": {"feishu-pages": "^0.7.6","markdown-it-mathjax3": "^4.3.2","vitepress": "^1.6.3","autoprefixer": "^10.4.15","postcss": "^8.4.30","sass": "^1.67.0","tailwindcss": "^3.3.3"}
}

复制后安装下。
npm i

根目录三个文件

postcss.config

module.exports = {plugins: {tailwindcss: {},autoprefixer: {},},
};

style.scss

@tailwind base;
@tailwind components;
@tailwind utilities;ul {ul {list-style-type: circle;ul {list-style-type: square;}}
}ol {ol {list-style-type: lower-alpha;ol {list-style-type: lower-roman;}}
}.callout {padding: 1em 1em 1em 3em;margin: 1.5em 0;border: 2px solid #ccc;border-radius: 5px;font-size: 1em;@apply relative;&-emoji {left: 1em;top: 0.8em;font-size: 1.2em;@apply absolute;}p,ul,ol {margin-top: 0;}& > *:last-child {margin-bottom: 0;}&-bg-1,&-bg-8 {@apply bg-red-50 dark:bg-red-950;}&-bg-2,&-bg-9 {@apply bg-orange-50 dark:bg-orange-950;}&-bg-3,&-bg-10 {@apply bg-yellow-50 dark:bg-yellow-950;}&-bg-4,&-bg-11 {@apply bg-green-50 dark:bg-green-950;}&-bg-5,&-bg-12 {@apply bg-blue-50 dark:bg-blue-950;}&-bg-6,&-bg-13 {@apply bg-purple-50 dark:bg-purple-950;}&-bg-7,&-bg-14 {@apply bg-gray-50 dark:bg-gray-950;}&-border-1,&-border-8 {@apply border-red-200 dark:border-red-800;}&-border-2,&-border-9 {@apply border-orange-200 dark:border-orange-800;}&-border-3,&-border-10 {@apply border-yellow-200 dark:border-yellow-800;}&-border-4,&-border-11 {@apply border-green-200 dark:border-green-800;}&-border-5,&-border-12 {@apply border-blue-200 dark:border-blue-800;}&-border-6,&-border-13 {@apply border-purple-200 dark:border-purple-800;}&-border-7,&-border-14 {@apply border-gray-200 dark:border-gray-800;}@apply text-gray-800 dark:text-gray-200;
}.grid {margin: 1.5em 0;
}iframe {@apply w-full aspect-video;border-width: 1px;
}

tailwind.config.js

/** @type {import('tailwindcss').Config} */
module.exports = {content: ['docs/**/*.md'],theme: {extend: {},},darkMode: 'class',plugins: [],
};

然后引入下
在主题文件,在.vitepress目录下新增theme/index.ts

import DefaultTheme from 'vitepress/theme';
import '../../style.scss';
export default {...DefaultTheme,
};

over
大概记录

http://www.lryc.cn/news/576026.html

相关文章:

  • 时序数据库全面解析与对比
  • 基础RAG实现,最佳入门选择(十二)
  • mysql表操作与查询
  • RJ45 以太网与 5G 的原理解析及区别
  • 成都芯谷金融中心·文化科技产业园:绘就区域腾飞新篇章
  • 如何在安卓设备上发送长视频:6 种可行的解决方案
  • day49-硬件学习之I2C(续)
  • 数据结构之顺序表(C语言版本)
  • MongoDB 和 Redis的区别
  • Tomcat Maven 插件
  • iOS 远程调试与离线排查实战:构建非现场问题复现机制
  • K8s port、targetPort和nodePort区别
  • GitHub Actions与AWS OIDC实现安全的ECR/ECS自动化部署
  • TCP/IP协议简要概述
  • 国产鸿蒙系统开放应用侧载,能威胁到Windows地位吗?
  • 工作台-01.需求分析与设计
  • qq邮箱 新版 怎么去掉个性签名?
  • Java 大视界 -- Java 大数据在智能教育学习社群知识共享与协同学习促进中的应用(326)
  • 参考nlohmann json设计Cereal宏 一行声明序列化函数
  • vscode把less文件生成css文件配置,设置生成自定义文件名称和路径
  • ​​Git提交代码Commit消息企业级规范
  • 自动驾驶nuPlan数据集-入门使用和可视化操作
  • 【NodeJs】【npm】npm安装electron报错
  • 智能体记忆原理-prompt设计
  • [Ethernet in CANoe]1--SOME/IP arxml文件格式的区别
  • 基于Spring Cloud Alibaba构建微服务架构的实践探索
  • Ubuntu 部署 ResilioSync3.0 指南
  • IBM RAG 挑战赛 挑战赛 冠军 RAG_Challenge 系统性理解
  • 微调大语言模型(生成任务),怎么评估它到底“变好”了?
  • dp进阶,树形背包(dfs+01)