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

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42371.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Scapy庫實現SYN洪水攻擊的Python腳本

Scapy庫實現SYN洪水攻擊的Python腳本 代碼用于學習熟悉Scapy庫及其在網絡安全研究和測試中提供的各種選項和功能 腳本旨在執行SYN洪水攻擊,這是一種分布式拒絕服務(DDoS)攻擊的類型。未經授權參與此類攻擊通常是違法的,可能會產生嚴重后果 代碼 SynFlood.py from scapy.all…

Google 搜索引擎:便捷高效、精準查詢,帶來無與倫比的搜索體驗

Google搜索引擎不僅具備檢索功能,實則是引領探索萬千世界的神秘鑰匙。試想,無論何時何地,只需輕觸屏幕,所需信息即可唾手可得。便捷與高效,令人嘆為觀止。其界面設計簡約直觀,操控體驗猶如與未來對話&#…

如何壓縮pdf文件大小,怎么壓縮pdf文件大小

在數字化時代,pdf文件因其穩定的格式和跨平臺兼容性,成為了工作與學習中不可或缺的一部分。然而,隨著pdf文件內容的豐富,pdf文件的體積也隨之增大,給傳輸和存儲帶來了不少挑戰。本文將深入探討如何高效壓縮pdf文件大小…

小米手機短信怎么恢復?不用求人,3個技巧一網打盡

當你突然發現安卓手機里的重要短信不見了,是不是感到一陣心慌意亂?別急,不用求人,更不用焦慮。作為基本的社交功能,短信是我們與外界溝通的重要橋梁,當刪除后,短信怎么恢復呢?今天&a…

重生奇跡MU 有向導不迷路

歡迎來到重生奇跡MU冒險世界!為了讓您更好地享受游戲樂趣,我們特別為您準備了一位貼心的導游,讓您在游戲中不再迷路。跟隨我們的導游,您將更快地了解游戲規則,更快地升級,更快地獲得勝利!快來加…

【pytorch23】MNIST測試實戰

理解 訓練完之后也需要做測試 為什么要做test? 上圖藍色代表train的accuracy 下圖藍色代表train的loss 基本上符合預期,隨著epoch增大,train的accuracy也會上升,loss也會一直下降,下降到一個較小的程度 但是如果只看…

Java:使用synchronized和Redis實現并發控制的區別

在線程同步中,synchronized和Redis雖然都可以用來實現并發控制,但它們的作用范圍、機制以及性能特點存在顯著差異。 1. 作用范圍 synchronized: 是Java語言內置的關鍵字,用于實現線程間的同步。它作用于對象或代碼塊,可以確保同一…

你手上有offer嗎?

作者:猿java。 ?順便吆喝一聲,如果你計算機、軟件工程、電子等相關專業本科及以上學歷,歡迎來共事,有個offer注意查收。 前端/后端/測試等均可投→技術大廠機會。 都說面試是 7分靠技術,3分靠技巧,今天我…

9.2 柵格圖層符號化單波段灰度渲染

文章目錄 前言單波段灰度QGis設置為單波段灰度二次開發代碼實現單波段灰度 總結 前言 介紹柵格圖層數據渲染之單波段灰度顯示說明:文章中的示例代碼均來自開源項目qgis_cpp_api_apps 單波段灰度 以“3420C_2010_327_RGB_LATLNG.tif”數據為例,在QGis中…

easy-poi實現動態列(標題)、多sheet導出excel

一個sheet動態導出、偽代碼&#xff0c;創建填充后的workbook對象 List<Map<String, Object>>list new ArrayList<Map<String, Object>>(); HashMap<String, Object> map new HashMap<>(); map.put("name", "小明")…

啟動完 kubelet 日志顯示 failed to get azure cloud in GetVolumeLimits, plugin.host: 1

查看 kubelet 日志組件命令 journalctl -xefu kubelet 文字描述問題 Jul 09 07:45:17 node01 kubelet[1344]: I0709 07:45:17.410786 1344 operation_generator.go:568] MountVolume.SetUp succeeded for volume "default-token-mfzqf" (UniqueName: "ku…

全光譜燈和普通led燈的區別?忠告行業三大隱患弊端!

隨著社會的迅猛發展和生活步伐的加速&#xff0c;科技產品層出不窮&#xff0c;其中全光譜燈作為書房的新寵&#xff0c;備受矚目。它是否真如其宣傳的那樣具有多重優勢&#xff0c;尤其是對那些格外注重視力健康的人群而言&#xff0c;全光譜燈是否會帶來潛在的健康風險&#…

【北京迅為】《i.MX8MM嵌入式Linux開發指南》-第一篇 嵌入式Linux入門篇-第十二章 Linux 權限管理

i.MX8MM處理器采用了先進的14LPCFinFET工藝&#xff0c;提供更快的速度和更高的電源效率;四核Cortex-A53&#xff0c;單核Cortex-M4&#xff0c;多達五個內核 &#xff0c;主頻高達1.8GHz&#xff0c;2G DDR4內存、8G EMMC存儲。千兆工業級以太網、MIPI-DSI、USB HOST、WIFI/BT…

Java基礎(十六):String的常用API

目錄 一、構造器方法二、String與字節數組的轉換&#xff08;編碼與解碼&#xff09;1、字符串 --> 字節數組&#xff1a;&#xff08;編碼&#xff09;2、字節數組 --> 字符串&#xff1a;&#xff08;解碼&#xff09;3、iso-8859-1的特殊用法4、byte數組的數字表示 三…

Java版Flink使用指南——從RabbitMQ中隊列中接入消息流

大綱 創建RabbitMQ隊列新建工程新增依賴編碼設置數據源配置讀取、處理數據完整代碼 打包、上傳和運行任務測試 工程代碼 在《Java版Flink使用指南——安裝Flink和使用IntelliJ制作任務包》一文中&#xff0c;我們完成了第一個小型Demo的編寫。例子中的數據是代碼預先指定的。而…

判斷對象能否回收的兩種方法,以及JVM引用

判斷對象能否回收的兩種方法&#xff1a;引用計數算法&#xff0c;可達性分析算法 引用計數算法&#xff1a;給對象添加一個引用計數器&#xff0c;當該對象被其它對象引用時計數加一&#xff0c;引用失效時計數減一&#xff0c;計數為0時&#xff0c;可以回收。 特點&#xf…

自動駕駛SLAM又一開源巔峰之作!深挖時間一致性,精準構建超清地圖

論文標題&#xff1a; DTCLMapper: Dual Temporal Consistent Learning for Vectorized HD Map Construction 論文作者&#xff1a; Siyu Li, Jiacheng Lin, Hao Shi, Jiaming Zhang, Song Wang, You Yao, Zhiyong Li, Kailun Yang 導讀&#xff1a; 本文介紹了一種用于自動…

突發!馬斯克3140億參數Grok開源!Grok原理大公開!

BIG NEWS: 全球最大開源大模型&#xff01;馬斯克Grok-1參數量3410億&#xff0c;正式開源!!! 說到做到&#xff0c;馬斯克xAI的Grok&#xff0c;果然如期開源了&#xff01; 就在剛剛&#xff0c;馬斯克的AI創企xAI正式發布了此前備受期待大模型Grok-1&#xff0c;其參數量達…

硅紀元視角 | 虛擬神經科學的突破:AI「賽博老鼠」誕生

在數字化浪潮的推動下&#xff0c;人工智能&#xff08;AI&#xff09;正成為塑造未來的關鍵力量。硅紀元視角欄目緊跟AI科技的最新發展&#xff0c;捕捉行業動態&#xff1b;提供深入的新聞解讀&#xff0c;助您洞悉技術背后的邏輯&#xff1b;匯聚行業專家的見解&#xff0c;…

企業需要什么樣的MES?

MES&#xff08;英文全稱&#xff1a;Manufacturing Execution System&#xff09;&#xff0c;即制造執行系統&#xff0c;是面向車間生產的管理系統。它位于上層計劃管理系統&#xff08;如ERP&#xff09;與底層工業控制&#xff08;如PCS層&#xff09;之間&#xff0c;是制…