vuepress 打包后左侧菜单链接 404 问题

背景

上周看到一本开源书 《深入架构原理与实践》,是基于 vuepress 搭建的,下载了源码,本地部署了一下,本文记录如何打包该源码遇到的路径问题及思考。

结论: vuepress 插件的 sideBar 的菜单路径默认是相对 / 的,并且是由 .vuepress/config.jsbase 属性控制,打包时需要按需要修改,开发环境下不能设置

环境准备

  1. node 18.0.0,版本过低的话,需要先安装版本管理工具 n ,再执行 n 18.0.0 安装合适的版本。
  2. yarn
  3. Tomcat
  4. Git

下载源码,执行安装和打包操作:

  1. git clone github.com/isno/theByt... && cd theByteBook
  2. yarn install
  3. yarn dev
  4. yarn build

直接用源码打包后在 .vuepress 目录下生成 dist 文件夹,就是开源书《深入架构原理与实践》的静态资源。

应用部署

该项目默认的静态文件路径是相对于 / 的,直接将 build 后的静态目录 dist 放到 tomcat/webapps 下访问,会出现 404,页面的静态资源路径都不正确,有两种解决方法。

第一种 ,直接把 dist 重命名为 ROOT ,作为 tomcat 的根应用后,就能正常访问了。 第二种,修改 vue 打包路径的 publicpath 和 vuepress 配置的 base 属性。

第一步,在工程的根目录、与 package.json 同级别的目录下,创建一个名为 vue.config.js 的打包配置文件,输入配置内容:

js 复制代码
module.exports = {
 publicpath: './',
 assetsdir: 'static',
 parallel: false
}

第二步,进入 .vuepress 目录,修改 config.js 在配置开头添加一个 base 属性,感谢《这篇文章》 的启发,试了一下果然可以。

重新执行 yarn build 打包后,直接将 dist 放到 tomcat 的 webapps 下访问首页正常:

个人思考

第一点 ,是关于 vuepress 插件的,它配置的 sideBar 的菜单路径默认是相对 / 的,它是由 .vuepress/config.jsbase 属性控制的:

如果应用部署的时候不是 ROOT 根目录的话,就需要配置这个路径与发布的应用目录名称一致,这里是 dist : 第二点,用 vuepress 搭建个人博客还是挺不错的,一个配置文件就搞定了,只需要专注编写内容的 md 文件,想到一个用途就是用它来搭建知识文档库。

相关推荐
虚惊一场7 小时前
在浏览器里跑 Prettier:格式化 Markdown 的四个难点
前端·javascript·vue.js
r_oo_ki_e_7 小时前
vue快速入门
前端·vue.js
虚惊一场7 小时前
把 CodeMirror 6 调教成 Markdown 编辑器:扩展、装饰与门面
前端·javascript·vue.js
万敏7 小时前
Vue3 全栈实战第三周:组件化开发完整记录 —— Props / Emit / provide-inject / 插槽 / 自定义指令
vue.js·node.js·全栈
虚惊一场7 小时前
一条 Markdown 渲染管线的全部细节:Worker、源行标注与按需加载
前端·javascript·vue.js
zithern_juejin9 小时前
深入理解 Vue 响应式原理:从 Object.defineProperty 到 Proxy 的全面进化
vue.js
OpenTiny社区10 小时前
TinyRobot v0.5.0 新版本强在哪?
前端·vue.js·github
sugar__salt10 小时前
Vue.js 前置知识:ES6+ 核心特性完全指南
前端·javascript·vue.js·vue·es6
腻害兔12 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 认证与权限:RBAC + 数据权限,这套“门禁系统“到底怎么设计的?
java·vue.js·人工智能·产品经理·ai编程
李明卫杭州13 小时前
Vue2 数组响应式为什么总"不更新"?深入源码对比 Vue3 的 Proxy 改造
前端·javascript·vue.js