步骤
-
根目录新建.env.development和.env.production文件
-
package.json配置启动参数
vite命令启动项目时,指定mode参数,加载vite.config.ts文件。
"dev": "vite --host 0.0.0.0 --port 8093 --mode development",
"prod": "vite --port 8093 --host 0.0.0.0 --mode production",
"build:dev": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false && vite build --mode development",
"build:prod": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false && vite build --mode production",
- 配置代理
在vite.config.ts中配置代理
server: {
cors: true,
proxy: {
'/api': {
target: VITE_SERVER_URL,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(/^\/api/, '') // 重写请求
}
}
}
- 配置vite-plugin-html
通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面title和logo。
createHtmlPlugin({
inject: {
data: {
logo: VITE_LOGO,
title: VITE_TITLE,
},
},
}),
代码
准备
安装组件
"axios": "^1.6.7",
"vite-plugin-html": "^3.2.2",
"vue": "^3.4.15",
编码
.env.developent
# 开发环境配置
NODE_ENV='development'
# 本地服务端口
VITE_PORT=8093
# 后台服务地址
VITE_SERVER_URL='http://localhost:8083'
# 页面标题
VITE_TITLE='XXX-dev'
# ICO
VITE_LOGO='/favicon-dev.ico'
# 超时时间(ms)
VITE_AXIOS_TIMEOUT=10000
.env.production
# 开发环境配置
NODE_ENV='production'
# 本地服务端口
VITE_PORT=12003
# 后台服务地址
VITE_SERVER_URL='http://192.168.31.3:11003/'
# 页面标题
VITE_TITLE='XXX'
# ICO
VITE_LOGO='/favicon.ico'
# 超时时间(ms)
VITE_AXIOS_TIMEOUT=10000
vite.config.ts
import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import {createHtmlPlugin} from 'vite-plugin-html';
// https://vitejs.dev/config/
export default (({mode}: {mode: string}) => {
const VITE_ENV_CONFIG = loadEnv(mode, process.cwd());
const VITE_SERVER_URL = VITE_ENV_CONFIG.VITE_SERVER_URL;
const VITE_TITLE = VITE_ENV_CONFIG.VITE_TITLE;
const VITE_LOGO = VITE_ENV_CONFIG.VITE_LOGO;
return defineConfig({
plugins: [vue(), vueJsx(),
createHtmlPlugin({
inject: {
data: {
logo: VITE_LOGO,
title: VITE_TITLE,
},
},
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
// 配置代理,解决跨域问题
server: {
cors: true,
proxy: {
'/api': {
target: VITE_SERVER_URL,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(/^\/api/, '') // 重写请求
}
}
}
},)
})
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="icon" href="<%= logo %>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容