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

news2024/9/21 20:26:37

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')] : [],
 }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1908154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统编程——线程控制

目录 一,关于线程控制 二,线程创建 2.1 pthread_create函数 2.2 ps命令查看线程信息 三,线程等待 3.1 pthread_join函数 3.2 创建多个线程 3.3 pthread_join第二个参数 四,线程终止 4.1 关于线程终止 4.2 pthread_exit…

为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?

大家都知道大模型是通过语言序列预测下一个词的概率。假定{ x 1 x_1 x1​, x 2 x_2 x2​, x 3 x_3 x3​,…, x n − 1 x_{n-1} xn−1​}为已知序列,其中 x 1 x_1 x1​, x 2 x_2 x2​, x 3 x_3 x…

MathType7.4.6.8最新免费下载,数学表达神器来袭!

大家好啊,我是爱分享的小能手!今天要给大家安利一款神奇的工具——MathType7.4免费版本。这不仅仅是一个简单的数学公式编辑器,而是你学术写作和数学研究的强大助手,简直是数学爱好者的“瑞士军刀”! MathType最新mac…

前端面试题17(js快速检索方法详解)

在前端JavaScript中,快速检索数据通常涉及到数组或对象的搜索。这里我会介绍几种常见的快速检索方法,并提供相应的代码示例。 1. 数组的find和findIndex方法 find: 返回数组中满足条件的第一个元素的值。findIndex: 返回数组中满足条件的第一个元素的索…

ASAN排查程序中内存问题使用总结

简介 谷歌有一系列Sanitizer工具,可用于排查程序中内存相关的问题。常用的Sanitizer工具包括: Address Sanitizer(ASan):用于检测内存使用错误。Leak Sanitizer(LSan):用于检测内存…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征,主运行文件feature_extraction,fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征,生成的29个特征保存在生成的feature矩阵中。程序已调通,可直接运行。 2-2…

mp4视频太大怎么压缩不影响画质,mp4文件太大怎么变小且清晰度高

在数字化时代,我们常常面临视频文件过大的问题。尤其是mp4格式的视频,文件大小往往令人望而却步。那么,如何在不影响画质的前提下,有效地压缩mp4视频呢?本文将为您揭秘几种简单实用的压缩技巧。 在分享和存储视频时&am…

入门 Vue Router

Vue Router Vue Router插件做了什么&#xff1f; 全局注册 RouterView 和 RouterLink 组件。添加全局 $router 和 $route 属性。启用 useRouter() 和 useRoute() 组合式函数。触发路由器解析初始路由。 标签介绍 RouterView 加载指定页面 <RouterLink to"/home"…

OpenAI Gym Atari on Windows

题意&#xff1a;在Windows系统上使用OpenAI Gym的Atari环境 问题背景&#xff1a; Im having issues installing OpenAI Gym Atari environment on Windows 10. I have successfully installed and used OpenAI Gym already on the same system. It keeps tripping up when t…

Java 静态变量、静态代码块、普通代码块、构造方法的执行顺序

今天碰到这个问题&#xff0c;看了课程以及资料&#xff0c;做出解答。这是我自己绘制的图&#xff0c;按从上到下&#xff0c;从左到右的顺序执行。如有问题请联系我修正。 要点&#xff1a; 1、执行顺序分为两步&#xff0c;类加载和初始化阶段。 2、因为静态变量和静态代码块…

如何使用Selenium处理Cookie,今天彻底学会了!_selenium获取cookies(1)

02、session介绍 session是另一种记录客户状态的机制&#xff0c;不同的是cookie保存在客户端浏览器中&#xff0c;而session保存在服务器上。客户端浏览器访问服务器的时候&#xff0c;服务器把客户端信息以某种形式记录在服务器上。存储在服务器的数据会更加的安全&#xff…

常见的认证方式

认证机制是一种用户确定用户身份或者权限的安全措施&#xff0c;比如用来验证某个用户是否有权限访问一个资源&#xff0c;如果认证通过&#xff0c;用户就可以成功访问&#xff0c;反之则会访问失败 常见的认证方式有四种&#xff0c;分别是 Basic、Digest、OAuth 和 Bearer …

【分布式系统】Filebeat+Kafka+ELK 的服务部署

目录 一.实验准备 二.配置部署 Filebeat 三.配置Logstash 四.验证 一.实验准备 结合之前的博客中的实验 主机名ip地址主要软件es01192.168.80.101ElasticSearches02192.168.80.102ElasticSearches03192.168.80.103ElasticSearch、Kibananginx01192.168.80.104nginx、Logs…

影视灯方案 H5228升降压恒流芯片 48V60V80V100V共阳0.01%深度调光无频闪

H5228 升降压恒流芯片是一款为 LED 照明应用设计的驱动解决方案&#xff0c;具有宽电压输入范围、高精度的恒流控制和多样的调光功能&#xff0c;适用于智能照明、摄影灯照明以及补光灯照明等领域。以下是对其特点和应用的详细分析&#xff1a; 产品特点 拓扑结构支持&#xf…

【2024华为HCIP831 | 高级网络工程师之路】刷题日记(BGP)

个人名片:🪪 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零基础学Java——小白入门必备🔥重识C语言——复习回顾🔥计算机网络体系———深度详讲HCIP数通工程师-刷题与实战🔥🔥

深度解析移动硬盘“函数不正确”错误及高效恢复策略

在数据密集型的社会中&#xff0c;移动硬盘作为移动存储的重要载体&#xff0c;承载着无数用户的个人信息、工作资料及珍贵回忆。然而&#xff0c;当遭遇“函数不正确”的错误时&#xff0c;这些宝贵的数据仿佛被一层无形的屏障所阻隔&#xff0c;让人束手无策。本文将深入探讨…

初学SpringMVC之执行原理

Spring MVC 是基于 Java 实现 MVC 的轻量级 Web 框架 导入 jar 包 pom.xml 文件导入依赖&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dep…

基于全志Orangepi Zero 2 的语音刷抖音项目

目录 一、硬件连接 二、项目实现功能 三、SU-03T语音模块的配置和烧录 3.1 创建产品&#xff1a; 3.2 设置PIN引脚为串口模式&#xff1a; 3.3 设置唤醒词&#xff1a; 3.4 设置指令语句&#xff1a; 3.5 设置控制详情&#xff1a; 3.6 发音人配置&#xff1a; 3.7 其…

第二证券股市知识:股票填权是怎么回事?利好还是利空?

1、股票填权的含义 股票填权是指在除权除息之后的一段时刻内&#xff0c;假设多数投资者看好该个股&#xff0c;股票的价格超过除权除息的基准价就叫做填权。上市公司假设能持续分红&#xff0c;就会向市场传递积极信号&#xff0c;招引更多投资者买入&#xff0c;越来越多的投…

我“硬刚”mmkv开源库对于版本号的定义赢啦!

我“硬刚”mmkv开源库胜利啦&#xff01; 前情是这个帖子https://blog.csdn.net/jzlhll123/article/details/139917169 之前项目中将mmkv1.3.4升级到1.3.5或者1.3.6&#xff0c;就从firebase后台上看到crash。 java.lang.UnsatisfiedLinkError: dlopen failed: library “libmm…