nginx+vite 项目打包及部署到服务器二级路由
项目打包及部署到服务器二级路由
例如:我希望将打包的项目部署到 http://localhost:8088/web/ 上
一. 项目配置及打包
项目部署到服务器二级路由需要配置基础路径base,即需要:
1.配置vite.config.ts中的基础路径
2.配置路由的基础路径
方式一 通过环境变量配置基础路径
分别在production和development模式下的环境变量中添加基础路径变量,生产环境:.env.production文件,开发环境:.env.development文件
##生产环境
NODE_ENV='production'
VITE_BASE_PATH=/web/
##开发环境
NODE_ENV='development'
VITE_BASE_PATH='/'
vite.config.ts
在配置中添加:
export default ({ mode }: ConfigEnv): UserConfig => {
// 获取 .env 环境配置文件
const env = loadEnv(mode, process.cwd());
return {
base: env.VITE_BASE_PATH,
...
}
}
router/index.ts
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_BASE_PATH),
routes
})
package.json
"scripts": {
"dev": "vite serve --mode development",
"build:prod": "vue-tsc --noEmit && vite build --mode production"
}
打包:
npm run build:prod
方式二 通过打包时的指令配置基础路径
不用配置环境变量,vite.config.ts不用配置base属性,只需要在router/index.ts中添加:
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes
})
import.meta.env.BASE_URL为vite内置
package.json
"scripts": {
"dev": "vite serve --mode development",
"dev:base": "vite serve --mode development --base",
"build:prod": "vue-tsc --noEmit && vite build --mode production"
"build:base": "vue-tsc --noEmit && vite build --mode production --base",
}
打包:
npm run build:base --base /web/
二. nginx配置及部署
server {
listen 8088;
server_name localhost;
location /web {
#二级路由时需要使用别名alias,不用root
alias html/dist/;
index index.html;
#若不配置try_files,刷新会404
try_files $uri $uri/ /web/index.html;
}
#后台接口
location /prod-api/ {
proxy_pass http://172.16.20.30:9905/;
}
}
Vite基础路径指令配置原理
在vite当中,官方提供了一些内置环境变量,其中就包括BASE_URL,该值默认为/,在项目文件中,必须通过import.meta.env.xxx的方式调用环境变量,此处为import.meta.env.BASE_URL,之后,vite会将import.meta.env.BASE_URL替换为内置的BASE_URL的值,并可以通过指令:--base <path>设置BASE_URL的值
使用npm运行脚本时可以传递参数,在package.json中添加指令:
demo: vite build --mode production
运行npm run demo时等同于vite build --mode production
运行npm run demo -- --base /web/时等同于vite build --mode production --base /web/
但是-- --有两个--,使用起来不太方便,于是改进一下指令:
demo: vite build --mode production --base
运行npm run demo --base /web/时等同于vite build --mode production --base /web/
nginx+vite 项目打包及部署到服务器二级路由的更多相关文章
- React项目打包并部署到 Github 展示预览效果
React项目打包并部署到 Github 展示预览效果 当开发者模式结束,准备打包的时进行以下步骤: 在package.json配置文件中加一句: "homepage": &quo ...
- Java项目使用 Tomcat 部署 Linux 服务器
一.安装 Java 环境 1 下载 jdk 8 yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 设置 centos7 环境变量 v ...
- 项目通过tomcat部署到服务器,请求数据中文乱码问题
问题: 本地项目请求访问,浏览器中文输出没问题.部署到服务器上面之后,返回到浏览器的中文就乱码了. 尝试办法: 1.修改tomcat下的conf中的service.xml中的配置信息: 重新启动后,没 ...
- nginx+uwsgi+django+virtualenv+supervisor部署web服务器
wsgi 全称web server gateway interface,wsgi不是服务器,也不是python模块,只是一种协议,描述web server如何和web application通信的规则 ...
- 高级运维(四):Nginx常见问题处理、安装部署Tomcat服务器、使用Tomcat部署虚拟主机
一.Nginx常见问题处理 目标: 本案例要求对Nginx服务器进行适当优化,以提升服务器的处理性能: 1> 不显示Nginx软件版本号 2> 如果客户端访问服务器提示“Too many ...
- 项目打包 tomcat部署
IDE: IDEA 1.项目maven管理先执行 clean,再执行 compile 2.如果编译compile不成功,则将 C:\Users\Administrator\.m2\repository ...
- 项目打包 weblogic部署
工作流打包: 由于没有集成单点,配置文件要修改 将webnocas.xml内容复制覆盖 web.xml 到这里修改完毕 选择weblogic项目,右键maven install,生成.ear文 ...
- idea maven项目打包并部署到tomcat
打包 打开Maven管理器,邮寄package,执行Run Maven Build,执行成功后将war包生成到target目录下. 部署 1.将war包复制到tomcat安装目录下的webapps目录 ...
- 【Vue】基于nodejs的vue项目打包编译部署
一·项目编译 1·进入项目目录下的终端执行命令 npm run build 正常情况如下图,如遇到错误不会编译成功,且编译后的html文件不能正常渲染. 2·编译完成后进入项目下的dist目录运行生成 ...
- Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)
Spring-boot因为其对jar包的高度集成以及简化服务配置,快速部署等的优点,逐渐成为Java开发人员的热衷的框架.下面演示一下怎么在Eclipse中新建Spring-boot项目以及打包部署. ...
随机推荐
- 【Appium_python】多进程启动时,没有设置间隔导致连接关闭,以及等待时间,导致用例未执行完成,服务提早关闭。
多进程启动多设备时,没有设置间隔时间,appium服务器以为受到远程攻击,就自动关闭连接,导致服务启动失败, 解决方法:用time.sleep设置时间间隔 也需要增加等待时间,等待其他设备用例都执行完 ...
- 【Delphi11】「Embarcadero.Delphi.11.0.v28.0.42600.6491.Lite.v17.0分享」
[Delphi11]转存或下载后将后缀名".exe"删除即可,或者直接右击解压缩也可.「Embarcadero.Delphi.11.0.v28.0.42600.6491.Lite. ...
- 修改allure图标和标题
allure的logo更换步骤 1.找到allure安装目录,进入目录如:D:\Program Files\allure-2.17.3\plugins\custom-logo-plugin\stati ...
- java_web----1
一.HTML 1.网页的构成 结构:HTML 超文本标记语言 标签语言 标签写法: <标签名> </标签名> <标签名/> 表现:CSS 行为:JavaScrip ...
- 自学JavaDay02_class01
注释 单行注释: //单行注释 多行注释 /** 多行注释* 多行注释* */ 文档注释 /** * 文档注释 * 文档注释 */ 标识符 关键字 标识符 所有的标识符都应该以字母(A-Z 或者 a- ...
- 【.NET】Swagger 允许接口重名
问题: Swagger Failed to load API definition. 相信用过swagger的小伙伴 一定经历过这样的错误,问题点很简单,是接口重名了. 我百度了一下,找不到答案. 谷 ...
- MacOS使用iTerm2 tab不区分大小写解答
打开控制台 输入 vim ~/.zshrc 按下 i 之后 // i == insert插入字符 粘贴以下代码 复制到该文件中 autoload -Uz compinit && co ...
- 【Unity】Lua热重载
写在前面 本文讨论的"Lua热重载"是基于他人现成工具和相关博文上展开的,所以这里并不会重复实现一遍工具,主要记录我的理解过程. Lua热重载 探索 偶然在知乎上翻到一篇文章&qu ...
- C++的weak_ptr
在以前的文章中,我们讲过C++的shared_ptr,利用它可以实现基于引用计数的指针回收,从而防止出现内存泄露. 但是事实上,即使是采用了shared_ptr,在存在循环引用的情况下其实仍然有可能会 ...
- 转发 关于Windows安装解压版MySQL出现服务正在启动-服务无法启动的问题
部分转自 :https://blog.csdn.net/u013901768/article/details/80707307 我是从服务器上复制了mysql的整个目录,到本地,然后怎么也不好用,看了 ...