vue3+ts+vite 上线打包流程步骤(亲测有效)

文章详细介绍了使用Vue3、TypeScript和Vite进行项目开发时,如何设置代理解决跨域问题,配置.env.staging文件以区分不同环境,以及在request.ts中根据环境调整请求基础URL。同时,提到了package.json中的构建命令和最终打包过程。

vue3+ts+vite 上线打包流程步骤(亲测有效)

1.设置代理,以及解决跨域问题在vite.config.ts文件中

 server: {
    open:true,   //默认启动项目打开页面
    port:5173,   //端口号
    proxy: {
      "/api": {
        // 匹配请求路径,
        target: "http://xxxxxx",//正式域名
        changeOrigin: true,
        // secure: true, // 是否https接口
        ws: true, // 是否代理websockets
        rewrite: (path) => path,
        // rewrite: (path) => path.replace(/^\/api/, '') (看接口具体情况)
      },
    },
  },

2.新建一个文件(.env.staging)在根目录上
在这里插入图片描述
3.在(.env.staging)中写入如下代码:(VITE_是必须加的,MODE可有可没有)

MODE = 'staging'
VITE_DEV_SERVER = http://localhost:5173
VITE_SERVER = http://xxxxxxx (正式域名)

4.在request.ts文件中进行路径判断

let baseURL = ''
if(import.meta.env.MODE === 'staging') { // 预备模式
    baseURL = process.env.NODE_ENV === 'development' ? import.meta.env.VITE_DEV_SERVER : import.meta.env.VITE_SERVER
} else { // development或production模式
    baseURL = ''
}

// 创建axios实例
const request = axios.create({
    baseURL:baseURL+'/api',// 所有的请求地址前缀部分(没有后端请求不用写)
   .....
})

request.ts完整代码:

import axios from 'axios'
import router from '../routes'
let baseURL = ''
if(import.meta.env.MODE === 'staging') { // 预备模式
    baseURL = process.env.NODE_ENV === 'development' ? import.meta.env.VITE_DEV_SERVER : import.meta.env.VITE_SERVER
} else { // development或production模式
    baseURL = ''
}

// 创建axios实例
const request = axios.create({
    baseURL:baseURL+'/api',// 所有的请求地址前缀部分(没有后端请求不用写)
    timeout: 80000, // 请求超时时间(毫秒)
    withCredentials: true,// 异步请求携带cookie
    headers: {
    // 设置后端需要的传参类型  
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest',
    },
})
 
// request拦截器
request.interceptors.request.use(
    config => {
        // 如果你要去localStor获取token,(如果你有)
        let token = sessionStorage.getItem("x-auth-token")
        if (token) {
            // 添加请求头
            config.headers["Authorization"] = "Bearer " + token
            config.headers["token"]=  token
        }
        return config
    },
    error => {
        // 对请求错误做些什么
        Promise.reject(error)
    }
)
 
// response 拦截器
request.interceptors.response.use(
    response => {
        // 对响应数据做点什么
        const res =  response.data
        if(res.code === 1) return res
        if (res.code === -2) {    
            ElMessage.error('请先登陆!')
            router.push({
               path:'/Login'
            }) 
            return res
        }
        if(res.code !== 1 && res.code !== -2) return ElMessage.error(res.msg)
    },
    error => {  
        // 对响应错误做点什么
        return Promise.reject(error)
    }
)
export default request

4.在package.json中加入运行代码

"dev:staging": "vite dev --mode staging",
"build:staging": "vite build --mode staging",
"build-only-staging": "vite build --mode staging",

在这里插入图片描述

5.在终端运行

npm run dev:staging //会运行VITE_DEV_SERVER 数据
npm run build:staging //会运行VITE_SERVER数据进行打包

6.把打包好的数据压缩给后台,后台上传到服务器
在这里插入图片描述

### 打包 Vite 构建的 Vue3 项目并与 Spring 应用集成部署 #### 准备工作 为了实现这一目标,需要确保开发环境已经安装 Node.js 和 npm 或 yarn。对于 Vite 创建的 Vue3 项目,默认情况下会有一个 `vite.config.ts` 文件用于配置构建选项。 #### 修改 Vite 配置文件 通常,在生产环境中打包前端资源时,可能希望调整一些默认设置来优化最终产物。可以在项目的根目录找到名为 `vite.config.ts` 的文件并做适当修改: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ build: { outDir: './dist', // 输出路径可以根据实际需求更改 assetsInlineLimit: 4096, // 小于该大小的静态资源会被内联处理 rollupOptions: { input: 'src/main.js', output: { entryFileNames: `assets/[name].js`, chunkFileNames: `assets/[name].js`, assetFileNames: `assets/[name].[ext]` } } }, plugins: [vue()] }) ``` 上述代码片段定义了输出目录和其他一些参数以适应与后端服务共同部署的需求[^1]。 #### 使用命令行工具进行打包 完成必要的配置之后,可以通过终端执行如下命令来进行打包操作: ```bash npm run build ``` 这将会依据之前设定好的规则编译整个应用程序,并将生成的结果放置在指定的目标文件夹中(通常是 dist)。此时得到的就是可以直接上线使用的静态网页文件集合。 #### 整合至 Spring Boot 中 接下来就是把这些静态页面加入到 Java Web 工程里去。一种简单的方式是将其复制粘贴进位于 Spring Boot Project 下面的 resources/static 路径下[^2]。具体步骤如下所示: - 把通过前面提到的方法获得的所有 .html、.css 及其他关联资源拷贝过来; - 如果有 API 请求涉及到跨域问题,则需考虑相应的解决方案; 另外值得注意的是,当采用这种方式发布多个单页应用(SPA)实例时,应当注意区分不同 SPA 对应的服务接口前缀以免造成混淆。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值