项目打包及部署到服务器二级路由

例如:我希望将打包的项目部署到 http://localhost:8088/web/ 上

一. 项目配置及打包

项目部署到服务器二级路由需要配置基础路径base,即需要:
1.配置vite.config.ts中的基础路径
2.配置路由的基础路径

方式一 通过环境变量配置基础路径

分别在productiondevelopment模式下的环境变量中添加基础路径变量,生产环境:.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 项目打包及部署的更多相关文章

  1. React项目打包并部署到 Github 展示预览效果

    React项目打包并部署到 Github 展示预览效果 当开发者模式结束,准备打包的时进行以下步骤: 在package.json配置文件中加一句: "homepage": &quo ...

  2. 项目打包 tomcat部署

    IDE: IDEA 1.项目maven管理先执行 clean,再执行 compile 2.如果编译compile不成功,则将 C:\Users\Administrator\.m2\repository ...

  3. 项目打包 weblogic部署

    工作流打包:   由于没有集成单点,配置文件要修改 将webnocas.xml内容复制覆盖 web.xml   到这里修改完毕 选择weblogic项目,右键maven install,生成.ear文 ...

  4. idea maven项目打包并部署到tomcat

    打包 打开Maven管理器,邮寄package,执行Run Maven Build,执行成功后将war包生成到target目录下. 部署 1.将war包复制到tomcat安装目录下的webapps目录 ...

  5. Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)

    Spring-boot因为其对jar包的高度集成以及简化服务配置,快速部署等的优点,逐渐成为Java开发人员的热衷的框架.下面演示一下怎么在Eclipse中新建Spring-boot项目以及打包部署. ...

  6. 【Vue】基于nodejs的vue项目打包编译部署

    一·项目编译 1·进入项目目录下的终端执行命令 npm run build 正常情况如下图,如遇到错误不会编译成功,且编译后的html文件不能正常渲染. 2·编译完成后进入项目下的dist目录运行生成 ...

  7. vue之项目打包部署到服务器

    这是今年的第一篇博客.整理一下vue如何从项目打包到部署服务器,给大家做下分享,希望能给大家带来或多或少的帮助,喜欢的大佬们可以给个小赞,如果有问题也可以一起讨论下. 第一步:这是很关键的一步.打开项 ...

  8. 【转】vue项目打包部署——nginx代理访问

    我又来了,今天部署了下vue项目,使用nginx做了代理,这样可以解决跨域的问题,这里做一个简单讲解. 1.先看vue项目打包(我这里使用的是vscode开发工具) 这里是我的项目结构: 打包之前需要 ...

  9. NIO开发Http服务器(1):项目下载、打包和部署

    最近学习了Java NIO技术,觉得不能再去写一些Hello World的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室.我们是做WEB开发的,整天围着tomcat.n ...

  10. 阿里云安装Nginx+vue项目部署

    阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...

随机推荐

  1. leetcode 31. 下一个排列 【时间击败 100%】 【内存击败 92.17%】

    对于该题,我本来兴致勃勃地想到了两个优化,但从提交结果来看根本看不出来有什么区别,但我发4我说的都是真的 -3- 1 public void nextPermutation(int[] nums) { ...

  2. Windows环境同时安装多个版本的Python解释器(python2和python3)

    https://blog.csdn.net/qq_21583139/article/details/125881382 出现问题: 更新pip 操作后出现,pip报错,应该是升级到最新pip版本然后和 ...

  3. python 自动化 代码操作数据库

    import pymysql from pymysql import connect con=pymysql.connect(host='localhost',port=3306,database=' ...

  4. angular js 实现模糊查询并分页

    如果这篇文章能给你带来帮助,不胜荣幸,如果有不对的地方也请批评指正 共同进步,因为最近使用augular前段所以看了一下,为了加深印象,所以记录一下,废话不多说直接上代码. 首先来讲你可以使用page ...

  5. uniapp - 设置代理

    uniapp - 设置代理 HbuilderX 找到 manifest.json 文件,点击源码视图 "h5" : { "title" : "案件要素 ...

  6. Document.createEvent与new Event区别

    Document.createEvent 写法: const e = document.createEvent('HTMLEvents'); e.initEvent('click', true, tr ...

  7. kunkun

    <html> <head> <title>cxk</title> </head> <body><h1>给设计师:字体 ...

  8. AgilePoin规则执行

    我在写窗体规则时,明明默认值已经绑定,但是在页面加载时规则并没有起作用,导致改隐藏的没隐藏,该显示的不显示.找了半天,发现规则设置时可选择执行事件. 设置在页面加载时执行规则后,发现还是不能正确显隐组 ...

  9. @Column和@Select使用测试

    1.@Select(select * from X ) /** * goods_level 0 商品等级, */@Column(name = "goods_level")priva ...

  10. [SQL Server]储存过程中使用临时表循环操作数据

    本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 由于工作原因,到目前为此已有一年多没有写SQL Server的储存过程了,已有些生疏.日前工作中有 ...