vite build 发布到nginx二级目录——将yudao-ui-go-view打包、部署到big目录下

1、修改配置

1)定义发布目录

在 yudao-ui-go-view\types\vite-env.d.ts文件中增加发布目录路径定义:VITE_PUBLISH_PATH,内容如下:

java 复制代码
/// <reference types="vite/client" />

interface ImportMetaEnv {
  // 端口
  VITE_DEV_PORT: string;
  // 开发地址
  VITE_DEV_PATH: string
  // 后端请求地址
  VITE_PRO_PATH: string
  // 发布目录
  VITE_PUBLISH_PATH: string
}

注意: 这里最好以VITE_开头,vite为了安全对环境变量做了保护,否则变量可能无法暴露访问。

2)增加二级目录发布环境配置

.新增二级目录生产环境配置文件yudao-ui-go-view\.env.prod2,内容如下:

VITE_PRO_PATH 可以写ip/host地址形式,我这使用了代理,见 nginx 中的 location location /big/admin-api/

java 复制代码
# port
VITE_DEV_PORT = '3000'

# development 后端地址
# VITE_DEV_PATH = 'https://demo.mtruning.club'
VITE_DEV_PATH = 'http://127.0.0.1:48080'

# 后端地址,根据实际情况修改
VITE_PRO_PATH = '/big'      

# 应用发布目录
VITE_PUBLISH_PATH = '/big'

# 租户开关
VITE_APP_TENANT_ENABLE=true

# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=true

(可选)新增生产环境配置文件yudao-ui-go-view\.env.prod,内容如下:

java 复制代码
# port
VITE_DEV_PORT = '3000'

# development path
# VITE_DEV_PATH = 'https://demo.mtruning.club'
VITE_DEV_PATH = 'http://127.0.0.1:48080'

# 后端地址,根据实际情况修改
VITE_PRO_PATH = '/' 

# 发布路径
VITE_PUBLISH_PATH = '/'

# 租户开关
VITE_APP_TENANT_ENABLE=true

# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=true

(可选)新增开发环境配置文件yudao-ui-go-view\.env.dev,内容如下:

java 复制代码
# port
VITE_DEV_PORT = '3000'

# development path
# VITE_DEV_PATH = 'https://demo.mtruning.club'
VITE_DEV_PATH = 'http://127.0.0.1:48080'

# production path
VITE_PRO_PATH = 'https://demo.mtruning.club'

# 发布路径
VITE_PUBLISH_PATH = '/big'

# 租户开关
VITE_APP_TENANT_ENABLE=true

# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=true

3)增加打包命令配置

在yudao-ui-go-view\package.json文件scripts节点下新增 build:prod2,修改dev,build,增加--mode参数

java 复制代码
"scripts": {
    "dev": "vite --host --mode dev",
    "build": "vue-tsc --noEmit && vite build --mode prod",
    "build:prod2": "vue-tsc --noEmit && vite build --mode prod2",
    "preview": "vite preview",
    "new": "plop --plopfile ./plop/plopfile.js",
    "postinstall": "husky install",
    "lint": "eslint --ext .js,.jsx,.ts,.tsx,.vue src",
    "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx,.vue src --fix"
  },

4)vite打包配置

在yudao-ui-go-view\vite.config.ts文件中修改defineConfig中的base,build.outDir,代码如下

java 复制代码
export default ({ mode }) => defineConfig({
  base: loadEnv(mode, process.cwd()).VITE_PUBLISH_PATH,
  // 路径重定向
  resolve: {
    ....
  },

  ...
  
  build: {
    target: 'es2015',
    outDir: OUTPUT_DIR + loadEnv(mode, process.cwd()).VITE_PUBLISH_PATH , // 输出目录,
    // minify: 'terser', // 如果需要用terser混淆,可打开这两行
    // terserOptions: terserOptions,
    rollupOptions: rollupOptions,
    brotliSize: brotliSize,
    chunkSizeWarningLimit: chunkSizeWarningLimit
  }

2、编译打包

在终端中执行 npm run build:prod2,会将编译结果放在yudao-ui-go-view\dist目录big子目录下,效果如图:

进入dist目录,可以直接压缩big目录为big.zip文件,后续上传部署到nginx服务中

3、配置nginx

配置管理后端代理及前端页面代理。

java 复制代码
        location /big/admin-api/ { ## 后端项目 - 管理后台
                proxy_pass http://127.0.0.1:48080/admin-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;                                                                 
                proxy_set_header REMOTE-HOST $remote_addr;                                                               
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                                             
        }                                                                                                                
                                                                                                                  
        location /big/ {                                                                                    
                try_files $uri $uri/ $uri/index.html /big/index.html;  #router = history                                 
        }

4、上传部署

在2、中的big.zip上传到nginx服务的根目录/var/www/html中,执行以下命令完成部署。

java 复制代码
cd /var/www/html
unzip big.zip
service nginx restart

部署情况如下,所有的路由前面都有一个二级目录big

本地开发环境之下 npm run dev,控制台输出如下:

按住ctrl 点击http://localhost:8000/big/打开浏览器访问效果:

本地开发环境,如果想不想用二级目录就在环境配置文件中配置VITE_PUBLISH_PATH='/'

本地开发环境,如果想不想用二级目录就在环境配置文件中配置VITE_PUBLISH_PATH='/'

本地开发环境,如果想不想用二级目录就在环境配置文件中配置VITE_PUBLISH_PATH='/'
============= 相关博文 ============

vue-cli build, vite build 生产部署刷新或弹窗404,页面空白修复方法

Ruoyi-vue-pro Vue + nginx 二级目录部署到云服务器

ruoyi-vue-pro优化------模块单独打包,增量更新、部署,告别等待

============= 相关博文 ============

相关推荐
FRing0310 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
徐小夕13 小时前
深度剖析 30k star 的编码 Agent DeepSeek-Reasonix:长会话 Token 成本直降 80%
前端·vue.js·github
ruanno_top16 小时前
1 万行表格只渲染 18 行:虚拟滚动让我放弃了三个功能
vue.js
仨孩子的爹16 小时前
套打总偏两毫米:预印刷单据的校准方法和三个误区
vue.js
枫叶轻语16 小时前
【Nginx 从入门到实战 09】前后端统一入口:部署页面与接口的完整配置
nginx·全栈
徐小夕16 小时前
JitKnow知识库4.8发布:本体+知识图谱检索引擎,让AI回答不再“一本正经地胡说八道”
前端·vue.js·github
tryCbest17 小时前
Vue3——第 11 篇:组合式 API(上)——setup 与响应式 API 深度解析
前端·javascript·vue.js
tryCbest18 小时前
Vue3——第 13 篇:计算属性与侦听器——computed 与 watch 的进化
前端·javascript·vue.js
无言听风雨丶18 小时前
Nginx 深度实战:从架构原理到生产排错
运维·nginx·架构
闲来没事抠鼻屎18 小时前
标签打印 8 个尺寸公式:小票、价签、吊牌、面单通用
vue.js