如何在现有Vue项目中集成Vuepress或Vitepress并构建内置可访问文档?
现有Vue项目集成文档方案:VuePress/VitePress及替代方案
一、可以直接集成构建好的静态文档
完全能把VuePress或VitePress生成的文档嵌入现有Vue项目,步骤很直接:
- 单独搭建一个VuePress/VitePress文档项目,写完内容后执行构建命令:
vuepress build(VuePress)或vitepress build(VitePress),得到dist目录的静态文件 - 把这个
dist文件夹复制到现有Vue项目的public目录下,建议重命名为docs - 在现有项目里加个入口,比如做个“文档”按钮,点击后要么跳转到
/docs/index.html,要么用<iframe>把文档嵌入到某个Vue组件里,就能在系统内部直接访问了 - 记得提前给VuePress/VitePress配置
base路径为/docs/,避免文档内部路由跳转出错
二、不用单独项目,直接在Vue里实现类文档功能
如果不想维护两个项目,直接在现有Vue项目里做类似的markdown文档也没问题:
- 用对应的markdown解析插件:Vite项目用
vite-plugin-md,Webpack项目用vue-markdown-loader,这些插件能把.md文件直接转成Vue组件 - 配置路由时直接把markdown文件当组件引入,比如:
// router/index.js import { createRouter, createWebHistory } from 'vue-router' // 导入markdown文件 import DocsHome from '../docs/README.md' import FeatureGuide from '../docs/feature-guide.md' const routes = [ // 你的业务路由 { path: '/docs', component: DocsHome }, { path: '/docs/feature', component: FeatureGuide } ] const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }) export default router - 要是想要VuePress/VitePress那种样式,直接引入它们的主题CSS就行,比如VuePress默认主题的
@vuepress/theme-default/dist/client/styles/index.css,能快速还原熟悉的文档视觉效果
三、一些实用提醒
- 用iframe嵌入静态文档的话,要注意样式隔离和路由同步的问题,比如文档里跳转路由时,主应用的导航栏状态要不要跟着变,这些得自己写点监听逻辑
- 直接解析markdown的方式更灵活,还能在文档里嵌入现有项目的业务组件,比如展示某个功能的示例组件,比纯静态文档交互性更强
- 要是想用VitePress的核心渲染能力,也可以把它当库引入,用它的
Content组件来渲染markdown内容,但需要额外调整Vite的配置,相对麻烦一点
内容的提问来源于stack exchange,提问作者joegsuero
相关产品推荐
相关产品推荐

