在项目中使用 VitePress 作为文档常见问题:样式丢失,图标丢失,打包错误,中文配置修改等

本文总结和记录自己在使用 vitepress 作为 Vue 项目文档时遇到的问题,以及解决方法。直接进入正题:

md 文档中引入组件部分样式丢失

默认你导入的 vue 文件的 style 标签里的样式会生效,但是样式之外的样式不会生效,需要手动引入到,vitepress 主题中。

你不在 vue 文件中的样式都要引入,比如说:

  • 你使用了 element-plus 的组件库,就需要手动引入他的 css 样式。
  • 你自己写的 全局的 css 样式等,

具体做法就是:在 .vitpress 文件夹下新建 theme 文件夹 再在 theme 文件夹下新建 index.ts ,在 index.ts 文件中导入需要导入的样式。例如:

import "./src/styles/index.css";

在 md 文档中 import 的组件图标丢失

这个和上一个样式丢失一样,需要手动引入图标库 也是在 theme 文件夹下的 index.ts 中导入。这里有个坑,就是你在 main.ts 中是怎么让组件图标全局生效的就照样复刻一份,不可只引入图标,其实 vitepress 它本身就是和新开发一个 vue 项目原理类似,很多地方的思路都是相通的。例如导入 fontawesome 图标库 并使用添加 fas 包:

import { library } from "@fortawesome/fontawesome-svg-core";
import { fas } from "@fortawesome/free-solid-svg-icons";
library.add(fas);

如何把相关配置改为中文

这个是在 .vitepress 文件夹下的 config.ts 中配置 defineConfig 的 themeConfig 属性,具体配置如下:

export default defineConfig({
  themeConfig: {
    nav: [
      { text: "开始使用", link: "/introduce" },
      { text: "组件", link: "/components/button" }
    ],
    //开启本地搜索
    search: {
      provider: "local"
    },
    //修改侧边栏导航的标题
    outline: {
      label: "页面导航"
    },
    // 修改文档页脚的文字
    docFooter: {
      prev: "上一页",
      next: "下一页"
    },
    returnToTopLabel: "回到顶部",
    sidebarMenuLabel: "菜单",
    darkModeSwitchLabel: "主题",
    lightModeSwitchTitle: "切换到浅色模式",
    darkModeSwitchTitle: "切换到深色模式"
  }
});

打包不能识别.d.ts 文件

这个问题呢是,vitepress 默认是不识别双扩展名称的(根据我自己的试验是这样的,没有看到官方解释),比如像.d.ts 文件的,如果有其他解决方案欢迎留言交流,所以需要你在原组件中,把相关报错的文件名字写完整,比如说你在 Button.vue 中导入了一个 type.d.ts 文件,改正前是:

import type { ButtonProps } from "./type";

build 的时候提示了这里导入的文件找不到,你就修正,修正后:

import type { ButtonProps } from "./type.d.ts";

一般这个时候问题就解决了,如果还不行就把./type.d.ts路径名改成绝对路径,就是基于 src 的路径名,然后重新打包。

build 打包后直接访问 index.html 时样式和图标丢失

如果你build打包之前本地访问文档是正常的,打包后访问dist文件夹中的 index.html发现样式和图标丢失的话,这个其实不是 bug,因为 build 打包的 dist 文件默认并不是静态的,包括了 server 服务,如果你仔细 build 过程观察的话,在 build 的过程中的时候出现了

building client + server bundles...

所以打包的文件夹不是静态的,所以你访问 index.html 时,css 样式丢失。这个文件在你部署的时候就正常了,如果要访问具体效果,可以使用 vitepress 提供的访问命令,在本地预览生产版本:

npm run docs:preview

这样默认会在本地 4173 端口启动服务,浏览器打开就行了。

最后

有收获的话,欢迎点赞,收藏。本文讲解了自己在使用 vitepress 作为 Vue 项目文档时遇到的问题,以及解决方法。后续如果有其他问题和解决办法,我会继续更新。如果你在使用 vitepress 的时候遇到问题,欢迎留言交流。

后续更新的文章:
解决 VitePress 在 docs中vue 文件导入的 ts 类型的组件报错:Cannot find module…or its corresponding type declarations

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,问题可能是在打包过程vitepress遇到了一个空值的情况,导致报错"TypeError: Cannot read properties of null (reading 'alt')"。这个错误可能是因为在渲染模块时,对于某个属性进行了读取,而该属性的值为空(null)。为了解决这个问题,可以通过在加载该模块时添加一个判断语句来避免渲染空值的情况。具体的做法是,在li标签添加一个v-if的判断语句,当goods为空时,取消对该模块的渲染。以下是修改后的代码示例: ```html <li @click="gotoProduct" v-if="goods != null"> <img v-bind:src="goods<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [关于Error in render: "TypeError: Cannot read property '0' of null"问题的解决方法](https://blog.csdn.net/qq_42985101/article/details/102056925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vant轮播图组件滑动报错Uncaught TypeError: Cannot read property ‘width‘ of null解决方案](https://blog.csdn.net/qq_37493515/article/details/117132216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值