vite+ts前期准备(尽量详细在更新)
创始人
2024-02-06 23:50:55
0

创建和准备vite+ts项目

打开命令行或进入vscode打开终端

输入命令:npm init vite
选择vue+ts
cd 进入项目
cnpm/yarn/npm install

初次运行项目

终端输入命令:cnpm run dev

可以设置运行之后自动打开浏览器

目录打开package.json dev:vite --open 添加–open

查看环境变量

目录打开main.ts console.log(import.meta.env)
打开浏览器运行项目 查看日志

请添加图片描述

base_url:环境根路径
dev:是否为开发环境
mode:模式
prod:是否为生产环境
ssr:是否服务端渲染

打包为生产环境并查看生产环境变量

cnpm run build 编译打包到dist目录
cnpm run preview 以生产环境运行项目
运行生产环境也可以跟开发环境一样 设置自动打开浏览器和端口脚本
package.json preview: 追加 --open --port 8080

查看生产环境变量

跟查看开发环境变量一样 这里只需打开浏览器 查看日志即可

在这里插入图片描述

package.json里 build:vue-tsc --noEmit 命令

这是打包过程中检查ts语法问题的脚本,与ts配置文件里strict配置有关

自定义环境变量

根目录创建三个文件 .env .env.development .env.production
语法注意前缀大写 如:VITE_username=lisi
.env 备选文件
.env.development 开发环境下的文件
.env.production 生产环境下的文件

这里写出.env示例 其他文件类似
在这里插入图片描述

查看自定义环境变量

在env.d.ts声明文件里定义一个接口

interface ImportMetaEnv {
VITE_username: string,
VITE_age: number
}

接下来就可以查看变量

main.ts console.log(import.meta.env.VITE_username)

开发环境运行 zhangsan
在这里插入图片描述

vite开发环境和生产环境配置

安装dotenv依赖

dotenv是一个零依赖模块,将内存缓存对象环境变量列表读取到一个对象中,即将环境变量中的值放入内存中
安装:cnpm install dotenv -S

vite配置 获取当前环境

vite.config.ts 以对象或函数(推荐)形式写配置

export default defineConfig((mode) => {const env = mode.modeconst envFileName:string = '.env'const curEnvFileName = `${envFileName}.${env}` console.log("当前环境:", curEnvFileName);if (env === 'development') {console.log("开发环境");} else if (env === 'production') {console.log("生产环境");}return {plugins: [vue()],}
})

vite.config.ts 开发环境配置

准备

  1. 访问koa路由
  2. vite底层commonServerOptions应用
  3. 跨域代理访问后端
  4. dotenv加载环境文件环境变量
vite.config.ts
export default defineConfig((mode) => {// 基础路径// const base:string = '/book'const env = mode.modeconst envFileName:string = '.env'const curEnvFileName = `${envFileName}.${env}` console.log("当前环境:", curEnvFileName);// server服务端 继承CommonServerOptions接口 CommonServerOptions在vite模块引入let server:CommonServerOptions = {} // 赋值一个空对象,不然报错if (env === 'development') {server = {host: '127.0.0.1', // 主机port: 3000, // 端口proxy: {'/book': {target:'http://192.168.136.9:8791/'}} // 代理访问,解决后端跨域}console.log('开发环境',server)} else if (env === 'production') {console.log("生产环境");}return {plugins: [vue()],// base,server}
})

在这里插入图片描述

在环境文件中应用ts模块声明变量

安装@type/node依赖

cnpm install --D @types/node

修改.env.development文件

VITE_HOST = '127.0.0.1'
VITE_PORT = 3000
VITE_BASE_URL = '/book'
VITE_PROXY_DOMAIN = 'http://192.136.168.9:8791/'

src目录下创建一个声明文件 src/declare_/myenv.d.ts

import 'dotenv'
// 声明中合并 declare module 'dotenv'
declare module 'dotenv'{export interface DotenvParseOutput{VITE_HOST: stringVITE_PORT: numberVITE_BASE_URL: stringVITE_PROXY_DOMAIN: string}
}

修改vite.config.ts

import { defineConfig,CommonServerOptions } from 'vite'
import vue from '@vitejs/plugin-vue'
import * as fs from 'fs'
import dotenv,{DotenvParseOutput} from 'dotenv'
export default defineConfig((mode) => {// 基础路径// const base:string = '/book'const env = mode.modeconst envFileName:string = '.env'const curEnvFileName = `${envFileName}.${env}` let server:CommonServerOptions = {} // 赋值一个空对象,不然报错const envData = fs.readFileSync(curEnvFileName)const envMap:DotenvParseOutput = dotenv.parse(envData) // 解析为key-value对象 dotenv.DotenvParseOutput泛型 需要声明合并 并引入console.log(envMap);console.log("当前环境:", curEnvFileName);// server服务端 继承CommonServerOptions接口 CommonServerOptions在vite模块引入if (env === 'development') {server = {host: envMap.VITE_HOST, // 主机port: envMap.VITE_PORT, // 端口proxy: {[envMap.VITE_BASE_URL]: {target: envMap.VITE_PROXY_DOMAIN}} // 代理访问,解决后端跨域}console.log('开发环境',server)} else if (env === 'production') {console.log("生产环境");}return {plugins: [vue()],// base,server}
})

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...