当前位置: 首页 > news >正文

vite工程化开发配置---持续更新

vite支持tsx开发

根据之前写的文章vue3+vite+ts+eslint+prettier+stylelint+husky+lint-staged+commitlint+commitizen+cz-git里面tsconfig配置了jsx相关选项,但是想要vite能够识别我们还需要配置一下
安装@vitejs/plugin-vue-jsx

pnpm i -D @vitejs/plugin-vue-jsx

vite.config.ts

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";export default defineConfig({plugins: [vue(), vueJsx()],
});

别名配置

vite.config.ts配置

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import path from "node:path";export default defineConfig({plugins: [vue(), vueJsx()],resolve: {alias: {"@": path.resolve(__dirname, "src"),"@com": path.resolve(__dirname, "src/components"),},// 导入时想要省略的扩展名列表。注意,不 建议忽略自定义导入类型的扩展名(例如:.vue),因为它会影响 IDE 和类型支持。extensions: [".ts", ".js", ".json", ".tsx"],},
});

tsconfig.app.json配置

{"extends": "./tsconfig.base.json","compilerOptions": {"composite": true,"lib": ["ES2020", "DOM", "DOM.Iterable"],// vue中tsx的配置"jsx": "preserve","jsxImportSource": "vue",// 添加对应的paths配置"paths": {"@/*": ["src/*"],"@com/*": ["src/components/*"]}},"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "types/*.d.ts"],"exclude": ["node_modules/**", "dist/**", "**/*.js", "vite.config.ts"]
}

测试一下有没有问题
在这里插入图片描述

vue,element-ui等 api,组件按需导入

安装插件

pnpm i -D unplugin-auto-import unplugin-vue-components

我们还没有配置的时候项目的目录如下:
在这里插入图片描述
然后我们配置一下vite.config.ts

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import path from "node:path";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";export default defineConfig({plugins: [vue(),vueJsx(),// 新增AutoImport({include: [/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx/\.vue$/,/\.vue\?vue/, // .vue/\.md$/, // .md],imports: [// 插件预设好包"vue","vue-router",],}),// 新增Components({}),],resolve: {alias: {"@": path.resolve(__dirname, "src"),"@com": path.resolve(__dirname, "src/components"),},// 导入时想要省略的扩展名列表。注意,不 建议忽略自定义导入类型的扩展名(例如:.vue),因为它会影响 IDE 和类型支持。extensions: [".ts", ".js", ".json", ".tsx"],},
});

这个时候插件会自动给我们生成两个文件一个是auto-imports.d.tscomponents.d.ts
在这里插入图片描述
这个时候我们才配置一下vite.config.ts里面的AutoImportComponents

AutoImport({include: [/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx/\.vue$/,/\.vue\?vue/, // .vue/\.md$/, // .md],imports: [// 插件预设好包"vue","vue-router",],eslintrc: {// 为true的时候,每次启动项目都会生成 auto-imports.d.ts 以及 .eslintrc-auto-import.json、// .eslintrc-auto-import.json这个我们需要在.eslintrc.cjs的extends里面去引入,否则会报错enabled: true,},dts: "./auto-imports.d.ts", // 插件给自动生成的声明文件,需要我们手动导入
}),
Components({dts: "./components.d.ts", // 插件给自动生成的声明文件,需要我们手动导入dirs: [], // 如果我们自己的业务组件,如`src/components`下面写的组件也想实习那自动按序导入的话,可以在这里面配置上路径
})

这个时候发现根目录下又多了一个文件.eslintrc-auto-import.json
在这里插入图片描述
所以我们也要修改一下.eslintrc.cjs
在这里插入图片描述
为了ts不报错,我们也需要配置一下tsconfig.app.json
在这里插入图片描述

然后我们安装element-plus

pnpm i element-plus

关于组件的按需导入官方文档上有介绍
在这里插入图片描述
我们照着配置好就行
这个时候我们可以在App.vue中测试一下
在这里插入图片描述
保存之后,我们可以看一下components.d.ts
在这里插入图片描述
ElButton组件就被动态引入了
在这里插入图片描述
也可以在文件中使用el-input,可以观察一下components.d.ts发现插件会自动帮我们把ElInput也给动态引入了

vite proxy代理配置

配置代理用于开发环境下解决接口跨域问题,要是后端人好给解决了跨域可以不配置
关于代理的配置可以看这篇文章vite配置之获取.env.[mode]下的数据
这个时候vite.config.ts配置如下
在这里插入图片描述

unocss配置

可以看这篇文章vite配置unocss

less 全局变量配置

css: {// 预处理器配置项preprocessorOptions: {less: {charset: false,// 注意 ";" 不要漏掉additionalData: '@import "./src/style/index.less";',},},},

vite build模式下去掉文件中的console,debugger

esbuild: {drop: command === 'serve' ? [('console', 'debugger')] : [],}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【服务器】端口映射
  • 【贪心算法题记录】134. 加油站
  • Spring AOP 实现原理
  • Java学习笔记整理: 关于设计模式:单例模式 2024/7/10;
  • 一节课说明一类奥数题系列——约数与倍数
  • 综合实验作业
  • ubuntu重装系统后,安装cuda,cudnn
  • 连接与隔离:Facebook在全球化背景下的影响力
  • 帕金森是怎么回事
  • 嵌入式工程师从0开始,到底该学什么,怎么学?
  • 生产英特尔CPU处理器繁忙的一天
  • 【第二章】开发模型和测试模型
  • (自用)gtest单元测试
  • Python爬虫-数据解析(先爬取整张页面再提取局部数据)
  • 在Ubuntu下安装samba实现和Windows系统文件共享
  • 深入了解以太坊
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Angular 响应式表单之下拉框
  • angular2 简述
  • CAP 一致性协议及应用解析
  • echarts花样作死的坑
  • Electron入门介绍
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Mysql5.6主从复制
  • Python连接Oracle
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • tab.js分享及浏览器兼容性问题汇总
  • vue2.0项目引入element-ui
  • 安卓应用性能调试和优化经验分享
  • 对象管理器(defineProperty)学习笔记
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端临床手札——文件上传
  • 使用Gradle第一次构建Java程序
  • 通过几道题目学习二叉搜索树
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 智能合约开发环境搭建及Hello World合约
  • 做一名精致的JavaScripter 01:JavaScript简介
  • elasticsearch-head插件安装
  • hi-nginx-1.3.4编译安装
  • k8s使用glusterfs实现动态持久化存储
  • ​数据链路层——流量控制可靠传输机制 ​
  • ######## golang各章节终篇索引 ########
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (二)测试工具
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (规划)24届春招和25届暑假实习路线准备规划
  • (回溯) LeetCode 78. 子集
  • (五)c52学习之旅-静态数码管
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • **python多态
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 通过系统影子账户实现权限维持