自動化按需導入組件庫的工具rust版本完成開源了

頭圖

背景

當我為每個Vue項目使用ui組件庫的時候,都會使用按需導入的方式來使用ui組件庫。但是每次按需導入,不可避免的就需要做以下三步。我們以element plus ui組件庫為例。

1. 安裝依賴

第一步,當然是需要安裝依賴。命令如下:

pnpm add unplugin-vue-components unplugin-auto-import // npm和yarn同理

2. 添加vite配置

第二步,就是往vite的配置里面添加配置,如下所示:

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({// ...plugins: [// ...AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],
})

3. 修改ts配置

第三步,就是寫入ts的配置,如下所示:

{"include": ["components.d.ts", "auto-imports.d.ts"]
}

雖然說這三步實際也花費不了多少時間,但是每個項目都這么做,那不是太費時間了嗎?這個工具的出現就是為了解決這個問題。

有了這個工具,我們只需要一個命令就可以完成以上三個步驟。如下所示:

// 當然前提需要安裝這個工具
ew-auto-import-tool --library element-plus

rust版本的出現

在這之前,我也將這個工具發布了一個npm包,并且也寫了一篇介紹使用文章。

這個版本的工具源碼是使用typescript編寫的,為了提升性能和加快編譯效率,我特意又花時間完成了rust版本。

讓我們一起來看看rust版本是如何使用這個工具更高效的完成按需導入的自動化吧。

編寫一個sh腳本,代碼如下所示:

#!/bin/bash# 顏色定義
GREEN="\033[0;32m"
BLUE="\033[0;34m"
YELLOW="\033[0;33m"
RED="\033[0;31m"
NC="\033[0m" # No Color# 打印帶顏色的消息
function print_message() {echo -e "${BLUE}===> ${1}${NC}"
}# 檢查命令是否存在
function check_command() {if ! command -v $1 &> /dev/null; thenecho -e "${RED}錯誤: $1 未安裝,請先安裝它。${NC}"exit 1fi
}# 檢查必要的命令
check_command "cargo"
check_command "npm"# 設置工作目錄
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RUST_DIR="$(dirname "$SCRIPT_DIR")"
EXAMPLE_PROJECT="my-vue-app"
EXAMPLE_DIR="$SCRIPT_DIR/$EXAMPLE_PROJECT"print_message "開始運行 Auto Import Tool 示例"# 編譯 Rust 工具
print_message "編譯 Rust 工具"
cd "$RUST_DIR"
cargo build --release
if [ $? -ne 0 ]; thenecho -e "${RED}編譯失敗,請檢查錯誤信息。${NC}"exit 1
fi
echo -e "${GREEN}編譯成功!${NC}"# 創建示例 Vue 項目
print_message "創建示例 Vue 項目"
cd "$SCRIPT_DIR"# 如果項目已存在,詢問是否刪除
if [ -d "$EXAMPLE_PROJECT" ]; thenecho -e "${YELLOW}警告: $EXAMPLE_PROJECT 目錄已存在。${NC}"read -p "是否刪除并重新創建? (y/n) " -n 1 -rechoif [[ $REPLY =~ ^[Yy]$ ]]; thenrm -rf "$EXAMPLE_PROJECT"elseecho -e "${YELLOW}使用現有項目繼續。${NC}"fi
fi# 如果項目不存在,創建新項目
if [ ! -d "$EXAMPLE_PROJECT" ]; thenecho -e "${GREEN}創建新的 Vue + TypeScript 項目...${NC}"npm create vite@latest $EXAMPLE_PROJECT -- --template vue-tscd "$EXAMPLE_PROJECT"npm install
elsecd "$EXAMPLE_PROJECT"
fi# 運行 Auto Import Tool
print_message "運行 Auto Import Tool 配置 Element Plus"
TOOL_PATH="$RUST_DIR/target/release/ew-auto-import-tool"echo -e "${YELLOW}選擇運行模式:${NC}"
echo "1) 自動模式 (使用 Element Plus)"
echo "2) 交互模式 (手動選擇組件庫)"
read -p "請選擇 (1/2): " -n 1 -r
echoif [[ $REPLY =~ ^[1]$ ]]; then"$TOOL_PATH" --library element-plus --path "$EXAMPLE_DIR"
else"$TOOL_PATH" --path "$EXAMPLE_DIR"
fi# 創建示例組件
if [ $? -eq 0 ]; thenprint_message "創建示例組件以驗證配置"# 創建一個使用組件庫的示例組件cat > "$EXAMPLE_DIR/src/App.vue" << EOL
<template><div class="container"><h1>Element Plus 自動導入示例</h1><div class="card"><el-form><el-form-item label="用戶名"><el-input v-model="username" placeholder="請輸入用戶名"></el-input></el-form-item><el-form-item label="密碼"><el-input v-model="password" type="password" placeholder="請輸入密碼"></el-input></el-form-item><el-form-item><el-button type="primary" @click="handleSubmit">登錄</el-button><el-button>取消</el-button></el-form-item></el-form></div></div>
</template><script setup lang="ts">
import { ref } from 'vue'const username = ref('')
const password = ref('')const handleSubmit = () => {if (!username.value || !password.value) {ElMessage.warning('請輸入用戶名和密碼')return}ElMessage.success('登錄成功!')
}
</script><style>
.container {max-width: 800px;margin: 0 auto;padding: 20px;
}.card {padding: 20px;border-radius: 8px;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
</style>
EOLprint_message "示例創建完成"echo -e "${GREEN}現在你可以運行項目來測試自動導入功能:${NC}"echo -e "cd $EXAMPLE_PROJECT && npm run dev"
fiprint_message "示例運行完成"

整個腳本代碼的核心就是使用cargo build --release命令編譯出工具的可執行文件,然后初始化一個vue項目并執行該可執行文件,這樣就完成了一個示例。

使用步驟

前提條件

  • 已安裝 Rust 和 Cargo
  • 已編譯 Auto Import Tool 的 Rust 版本

使用方法

1. 編譯工具

在?rust?目錄下運行以下命令編譯工具:

cargo build --release

編譯后的可執行文件將位于?target/release?目錄下。

2. 創建一個 Vue 項目

使用 Vite 創建一個新的 Vue 項目:

npm create vite@latest my-vue-app -- --template vue-ts
cd my-vue-app
npm install

3. 使用工具配置組件庫

運行編譯后的工具,并指定要配置的組件庫和項目路徑:

# 使用相對路徑運行工具
../target/release/ew-auto-import-tool --library element-plus --path ./my-vue-app

或者使用交互式方式:

../target/release/ew-auto-import-tool --path ./my-vue-app

然后按照提示選擇要配置的組件庫。

如果覺得本工具有用,感謝大家使用,點贊收藏不迷路,點個小star吧,工具源碼地址在這里。

感興趣的可以看看源碼,后期我再寫文章詳細講解源碼的實現,今天就到此為止,謝謝大家閱讀。

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

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

相關文章

Linux內核中TCP分段的核心機制:tcp_fragment函數解析

引言:TCP分段的必要性 在TCP/IP協議棧中,MSS(最大分段大小) 限制了單次傳輸的數據量。當應用層發送的數據超過當前路徑的MSS時,內核必須執行分段操作。tcp_fragment函數正是Linux內核中處理TCP分段的核心機制,它巧妙地在協議合規性、內存安全和性能效率之間取得平衡。 一…

【趙渝強老師】OceanBase OBServer節點的SQL層

OceanBase OBServer節點的SQL層將用戶的SQL請求轉化成對一個或多個Tablet的數據訪問。SQL層會按照以下順序經過一系列組件來處理一個SQL&#xff1a; Parser -->Resolver-->Transformer-->Optimizer-->CodeGenerator-->Executor。視頻講解如下 【趙渝強老師】O…

從“高配”到“普惠”,黑芝麻智能攜手Nullmax打造輔助駕駛主流量產方案

近日&#xff0c;黑芝麻智能攜手Nullmax打造的輔助駕駛主流量產方案正式發布。該方案面向8-15萬元級別主流車型&#xff0c;基于單顆黑芝麻智能武當C1236跨域計算芯片&#xff0c;集成Nullmax全棧自研的軟件技術架構&#xff0c;結合領先的視覺感知算法&#xff0c;打造高性能輔…

信息安全認證體系全解析:從資質證明到行業準入的實踐指南

Hello&#xff01;大家好&#xff0c;小編是一名專注IT領域的資深探索家&#xff0c;大家發現了嗎&#xff1f;現在刷招聘軟件&#xff0c;國企安全崗必標 "CISP 優先"&#xff0c;外企招聘悄悄寫著 "CISSP 加分"—— 這些帶字母的證書到底是啥&#xff1f…

優雅地創建實體類——Builder 鏈式調用

我們來看以下的代碼。改造前構造實體類用重載構造器或用 setter 對變量進行賦值&#xff0c;一旦變量變多則需要對每個變量進行 set 賦值&#xff0c;并且有可能會賦值錯對象。 private static void test() {//1.構造器賦值Task task1 new Task("2023000000009439"…

如何輕松將照片從 iPhone 傳輸到 Android?

從 iPhone 換到 Android 手機后&#xff0c;你肯定不想丟掉珍貴的照片回憶吧&#xff1f;好在&#xff0c;本文分享了 6 種有效的解決方案&#xff0c;教你如何輕松地將照片從 iPhone 傳輸到 Android。 第 1 部分&#xff1a;如何通過 iReaShare Phone Transfer 將照片從 iPhon…

AI編程:[體驗]存量微服務架構下植入WebSocket的“踩坑”與“填坑”

一、核心需求 功能需求&#xff1a;用戶可以通過語音與AI對話&#xff0c;并實現類似ChatGPT的實時交互&#xff08;流式響應&#xff0c;打字機效果&#xff09;技術需求&#xff1a;在現有微服務架構中進行擴展&#xff08;SpringCloud&#xff09; 二、技術盲點 陌生領域 …

uniapp事件onLoad區分大小寫

區分大小寫。不然會不起作用。onLoad方法中的功能均不會被執行。 除了功能邏輯要檢查外。大小寫是要認真檢查的一部分

《打破微前端困局:樣式沖突與資源隔離破局指南》

微前端架構憑借其獨特優勢&#xff0c;正逐漸成為眾多大型項目的首選架構模式。它將一個龐大的前端應用拆解為多個相對獨立的子應用&#xff0c;每個子應用可以獨立開發、部署和維護&#xff0c;極大地提升了開發效率與團隊協作的靈活性。然而&#xff0c;隨著微前端架構的廣泛…

OpenCV——邊緣檢測

邊緣檢測 一、邊緣檢測二、邊緣檢測算子2.1、Sobel算子2.2、Scharr算子2.3、Laplacian算子 三、Canny邊緣檢測3.1、Canny邊緣檢測的步驟3.2、Canny算法的實現 一、邊緣檢測 邊緣是指圖像中像素的灰度值發生劇烈變化的區域&#xff1a; 圖像中的邊緣主要有以下幾種成因&#x…

2506認證資訊|工信部出手整治多品牌充電寶,WMC上海稍遜往年,RED修訂Common Charger,WiFi7 FCC測試

01 — 中國 工信部擬制定移動電源強制性國家標準 該標準將從以下方面全面提升移動電源安全性&#xff1a; 1. 擬在GB 31241、GB 4943.1基礎上&#xff0c;新增或加嚴過充電、針刺等試驗要求。 2. 擬提出影響電池安全的正負極材料、隔膜等關鍵材料要求。 3. 擬規范鋰離子電池…

Linux Regulator 子系統核心邏輯與關鍵問題全解析

Linux Regulator 子系統核心邏輯與關鍵問題全解析 一、什么是 regulator 子系統&#xff1f;核心作用&#xff1f; regulator 子系統是 Linux 內核為板級/SoC 多路可控電源設計的統一電源管理框架。它的主要作用是&#xff1a; 為每一路可控電源&#xff08;Buck、LDO、DCDC …

制造業官網3D應用,讓產品會“說話”

在當今數字化時代&#xff0c;裝備制造業正經歷著前所未有的變革。隨著消費升級和國內經濟的蓬勃發展&#xff0c;中國社會的經濟格局從傳統的“工業經濟”向多元化的“服務經濟”轉型。裝備制造業作為制造業與服務業融合的核心領域&#xff0c;積極探索全新的“服務化”發展模…

SCAU15--氣球狂歡節

15 氣球狂歡節 Time Limit:1000MS Memory Limit:65535K 題型: 編程題 語言: G;GCC 描述&#xff1a; 一個充滿魔法的國度中&#xff0c;存在一場年度的節日&#xff0c;名為“氣球狂歡節”。在這個節日中&#xff0c;有一個傳統的比賽&#xff0c;那就是“氣球挑戰賽”…

python打卡day56@浙大疏錦行

知識點回顧&#xff1a; 假設檢驗基礎知識 原假設與備擇假設P值、統計量、顯著水平、置信區間 白噪聲 白噪聲的定義自相關性檢驗&#xff1a;ACF檢驗和Ljung-Box 檢驗偏自相關性檢驗&#xff1a;PACF檢驗 平穩性 平穩性的定義單位根ADF檢驗: 越小越平穩 季節性檢驗 ACF檢驗序列…

采集文章+原創AI處理+發布網站詳細教程

簡數采集器是新一代的網站文章采集和發布平臺&#xff0c;完全在線配置和使用云采集&#xff0c;功能強大&#xff0c;操作簡單&#xff0c;配置快捷高效。 簡數不僅提供網頁文章采集、數據批量處理、定時采集、定時定量自動發布等基本功能&#xff0c;還集成強大的SEO工具與接…

Hystrix超時降級機制全解析

Hystrix的超時降級實現主要通過以下核心機制完成&#xff0c;結合配置、注解和Fallback邏輯實現服務容錯&#xff1a; 1. 超時觸發條件 默認超時時間&#xff1a;Hystrix默認超時閾值為1秒&#xff0c;超過該時間未響應則觸發降級。自定義配置&#xff1a;可通過HystrixComman…

6月份最新代發考試戰報:思科華為HCIP HCSE 考試通過

6月份最新代發考試戰報&#xff1a;思科華為HCIP HCSE 考試通過 H19-423 HCSA-Presales-IP Network 數通考試通過&#xff0c; H12-725 HCIP-Security安全 考試通過&#xff0c;H13-121 HCIP-Kunpeng Application Developer鯤鵬計算 考試通過&#xff0c;CCNP 350-401考試通過…

談談我的軟考經歷

我 2020 年高考進入大學&#xff0c;軟件工程專業&#xff0c;去年&#xff08;24年7月&#xff09;畢業開始工作。我實習是在一家云計算公司&#xff0c;公司內部對軟考的證書沒有什么激勵或補助之類的&#xff0c;我也一直認為計算機嘛&#xff0c;“talk is cheap&#xff0…

CVPR 2025革命性突破!可變形Mamba,刷新SOTA記錄!

CVPR 2025上&#xff0c;眾多創新研究展示了Mamba在圖像分類、目標檢測、語義分割等多個任務中的卓越表現。其中&#xff0c;可變形Mamba的最新研究成果正在不斷刷新我們對視覺任務性能的認知。大連理工大學發布的DefMamba通過可變形掃描策略動態調整掃描路徑&#xff0c;優先關…