自动化按需导入组件库的工具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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;优先关…