当前位置: 首页 > 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.lqws.cn/news/543385.html

相关文章:

  • 微信小程序进度条progress支持渐变色
  • Stable Diffusion入门-ControlNet 深入理解-第三课:结构类模型大揭秘——深度、分割与法线贴图
  • 【LeetCode 热题 100】42. 接雨水——(解法三)单调栈
  • FPGA在嵌入式图像处理中的深度应用!
  • 深圳中青宝互动网络股份有限公司游戏运维工程师面试题(笔
  • python实战项目79:采集知乎话题下的所有回答
  • 【用户权限】超级用户(二)
  • win7实现永恒之蓝ms17_010漏洞之445端口
  • matlab实现相控超声波成像
  • 推荐一个基于C#开发的跨平台构建自动化系统!
  • 通信无BUG,ethernet ip转profinet网关,汽车焊接设备通信有心机
  • 面向大语言模型幻觉的关键数据集:系统性综述与分类法_DEEPSEEK
  • Spring Boot整合Redis指南
  • 从电费追缴到碳减排:一个预付费系统如何重塑校园能源生态
  • 使用 Vcpkg 安装 Qt 时的常见问题与解决方法
  • CloudFormation 实现 GitHub Actions OIDC 与 AWS ECR 的安全集成
  • pikachu漏洞练习---File Inclusion(文件包含漏洞)和Unsafe Fileupload(不安全的文件上传)
  • 为什么body{height:100%}会有滚动条?
  • 悦己汉服体验馆小程序(协同过滤算法、WebSocket即时聊天)
  • Solidity学习 - 代理模式中的初始化漏洞
  • Outlook总是提示登录微软,怎么办?
  • 非功能测试
  • 操作系统之文件管理(王道)
  • Linux内核启动:深入理解Initramfs与Initrd机制
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • 【C/C++】C++26新特性前瞻:全面解析未来编程
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_rmem 和 net.core.rmem_default 关系
  • 极客时间·AI 数据分析训练营(1期)·毕业总结
  • 免费AI助手工具深度测评:Claude4本地化部署与实战应用指南
  • 87.xilinx FPGA读取器件id方法