当前位置:   article > 正文

nginx+vite+Vue3 项目打包及部署到服务器二级路由_vue3 nginx

vue3 nginx

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

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

一. 项目配置及打包

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

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

分别在productiondevelopment模式下的环境变量中添加基础路径变量,生产环境:.env.production文件,开发环境:.env.development文件

  1. ##生产环境
  2. NODE_ENV='production'
  3. VITE_BASE_PATH=/web/
  1. ##开发环境
  2. NODE_ENV='development'
  3. VITE_BASE_PATH='/'

vite.config.ts

  1. 在配置中添加:
  2. export default ({ mode }: ConfigEnv): UserConfig => {
  3. // 获取 .env 环境配置文件
  4. const env = loadEnv(mode, process.cwd());
  5. return {
  6. base: env.VITE_BASE_PATH,
  7. ...
  8. }
  9. }

router/index.ts

  1. const router = createRouter({
  2. history: createWebHistory(import.meta.env.VITE_BASE_PATH),
  3. routes
  4. })

package.json

  1. "scripts": {
  2. "dev": "vite serve --mode development",
  3. "build:prod": "vue-tsc --noEmit && vite build --mode production"
  4. }

打包:

npm run build:prod

方式二 通过打包时的指令配置基础路径

不用配置环境变量,vite.config.ts不用配置base属性,只需要在router/index.ts中添加:

  1. const router = createRouter({
  2. history: createWebHistory(import.meta.env.BASE_URL),
  3. routes
  4. })

import.meta.env.BASE_URL为vite内置
package.json

  1. "scripts": {
  2. "dev": "vite serve --mode development",
  3. "dev:base": "vite serve --mode development --base",
  4. "build:prod": "vue-tsc --noEmit && vite build --mode production"
  5. "build:base": "vue-tsc --noEmit && vite build --mode production --base",
  6. }

打包:

npm run build:base --base /web/

二. nginx配置及部署

  1. server {
  2. listen 8088;
  3. server_name localhost;
  4. location /web {
  5. #二级路由时需要使用别名alias,不用root
  6. alias html/dist/;
  7. index index.html;
  8. #若不配置try_files,刷新会404
  9. try_files $uri $uri/ /web/index.html;
  10. }
  11. #后台接口
  12. location /prod-api/ {
  13. proxy_pass http://172.16.20.30:9905/;
  14. }
  15. }

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 项目打包及部署到服务器二级路由 - 梦羽微澜 - 博客园 (cnblogs.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/120375
推荐阅读
相关标签
  

闽ICP备14008679号