记录--Vue自动生成组件名
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
unplugin-generate-component-name
一款用于以文件夹名或者setup标签写入名字来自动生成Vue组件名的插件。
项目地址
功能
- 支持 Vue 3 开箱即用。
- ️ 支持 Vite、Webpack、Rspack、Vue CLI、Rollup、esbuild 等,由 unplugin 提供支持。
- 支持文件夹名称和 Setup extend 两种模式。
- 完全支持 TypeScript。
安装
# Yarn
$ yarn add unplugin-generate-component-name -D # pnpm
$ pnpm i unplugin-generate-component-name -D
Vite 配置
// vite.config.ts
import GenerateComponentName from 'unplugin-generate-component-name/vite' export default defineConfig({
plugins: [
GenerateComponentName({ /* options */ }),
],
})
Rollup 配置
// rollup.config.js
import GenerateComponentName from 'unplugin-generate-component-name/rollup' export default {
plugins: [
GenerateComponentName({ /* options */ }),
],
}
Webpack 配置
// webpack.config.js
module.exports = {
/* ... */
plugins: [
require('unplugin-generate-component-name/webpack').default({ /* options */ }),
],
}
使用方法(开箱即用)
文件夹名称
- 你可以使用index组件所在的文件夹名作为组件的名字。
自动生成 Vue 组件名称
在Vue中,我们可以使用unplugin-generate-component-name插件自动基于目录名称生成组件名称。这个插件使得在大型代码库中找到和管理组件更加容易和直观。例如,假设我们有一个Vue组件名为Index.vue,此组件在Home目录中。通过unplugin-generate-component-name插件,此组件会自动命名为Home。
src/home/
├── index.vue // 组件名称是 Home
├── about.vue
└── users/
├── index.vue // 组件名称是 Users
└── info.vue
Setup Extend
在 <script setup> 标签中,我们设置了 name 属性为 "Home"。这显式地将组件命名为 "Home",unplugin-generate-component-name 插件会使用这个名字而不是 "Index"。
<template>
<!-- 你的组件标记 -->
</template> <script setup name="Home">
// 你的脚本逻辑
</script> <style>
<!-- 你的组件样式 -->
</style>
选项
type GenComponentName = (opt: {
filePath: string;
dirname: string;
originalName: string;
attrName: string | undefined;
}) => string;
interface PattenOptions {
include?: string | RegExp | (string | RegExp)[];
exclude?: string | RegExp | (string | RegExp)[];
genComponentName: GenComponentName;
}
interface Options extends Omit<PattenOptions, 'genComponentName'> {
enter?: PattenOptions[];
}
include
include 选项能够明确说明哪些文件应被包含在组件名称的自动创建过程中。
exclude
exclude 选项则用于指明哪些文件应排除在组件名称的自动创建过程之外。
enter
在 Options 接口中,有一个 enter 选项。enter 是一个数组,该数组中每个对象都被视作一种特定的规则用于处理不同的文件路径。
每一种规则都可以包含 include 和 exclude 选项,用以指明哪些文件是应特别对待的。你也可以要求对 genComponentName 函数进行特定的设置,以达到自定义组件名称生成的效果。
下面是一个例子:
// vite.config.ts
import GenerateComponentName from 'unplugin-generate-component-name/vite' export default defineConfig({
plugins: [
GenerateComponentName({
include: ['**/*.vue'],
enter: [{
include: ["**/*index.vue"],
genComponentName: ({ attrName, dirname }) => attrName ?? dirname
}, {
exclude: ['**/*.index.vue'],
include: ["src/components/**/*.vue"],
genComponentName: ({ dirname, originalName }) => `${dirname}-${originalName}`
}]
}),
],
});
在这个例子中,unplugin-generate-component-name 插件被配置为处理所有的 .vue 文件。在 enter 选项中有两个对象适用于不同的文件路径:
- 第一个对象覆盖所有以
"index.vue"结尾的文件。genComponentName函数返回组件名称。如果script setup 标签中已经指定了名称,那么优先级将会很高; 如果没有,文件夹名称(dirname)就将会使用。 - 第二个对象排除了所有以
"index.vue"结尾的文件, 仅包括"src/components/"目录下的.vue文件。genComponentName函数用来以${dirname}-${originalName}的格式生成组件名。例如,对于一个名为src/component/Button中的MyButton.vue文件,它将会是Button-MyButton。
本文转载于:
https://juejin.cn/post/7314301236098269236
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录--Vue自动生成组件名的更多相关文章
- Unity 自动生成组件索引类工具
Unity 自动生成组件索引类工具 需求由来 我们在写UI类时 需要获取预设中的组件 joystick = transform.Find("joystick"); backgrou ...
- eclipse自动生成变量名声明(按方法返回值为本地变量赋值)
eclipse自动生成变量名声明(按方法返回值为本地变量赋值) ctrl+2+L 这个快捷键可自动补全代码,极大提升编码效率! 注:ctrl和2同时按完以后释放,再快速按L.不能同时按! 比如写这句代 ...
- vue动态生成组件
单个组件引用,引入此文件js.全局使用,注册到vue的main文件Vue.prototype.create = Create create.js import Vue from 'vue';impor ...
- vue 自动生成菜单
import constant from './const' export function getRouters (files) { let filenames = files.keys() let ...
- vite插件-自动生成vue组件文档
特点 支持热更新 快速启动,依赖于 vite,无需另起服务 自动生成组件导航 ui 采用了vant-ui的样式 核心方法覆盖率达到了 92.86% 使用 yarn add vite-plugin-vu ...
- 使用vue与element组件
1.安装element npm i element-ui -S 2.引入 在main.js写入一下内容 import Vue from 'vue'; import ElementUI from 'el ...
- vue自定义全局组件(自定义插件)
有时候我们在做开发的时候,就想自己写一个插件然后就可以使用自己的插件,那种成就感很强.博主最近研究element-ui和axios的时候,发现他们是自定义组件,但是唯一有一点不同的是,在用elemen ...
- Sqlalchemy model 文件自动生成
自动生成Sqlalchemy的models文件的包早用过了,有个字段类型做了改动,调了得10几分钟才搞定.记录下自动生成models文件的python包sqlacodegen sqlacodegen已 ...
- 简述vue中父子组件是怎样相互传递值的(基础向)
前言 首先,你需要知道vue中父组件和子组件分别指的是什么? 父组件:vue的根实例——用new Vue()构造函数创建的vue实例(实例会有一个挂载点,挂载点里的所有内容可理解为父组件的内容) ...
- Java代码自动生成,生成前端vue+后端controller、service、dao代码,根据表名自动生成增删改查功能
本项目地址:https://github.com/OceanBBBBbb/ocean-code-generator 项目简介 ocean-code-generator采用(适用): ,并使用m ...
随机推荐
- 二进制安装Kubernetes(k8s)v1.29.2
二进制安装Kubernetes(k8s)v1.29.2 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes(k ...
- NC20139 [JLOI2014]松鼠的新家
题目链接 题目 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树& ...
- NC14704 美味菜肴
题目链接 题目 题目描述 小明是个大厨,早上起来他开始一天的工作.他所在的餐厅每天早上都会买好 \(n\) 件食材(每种食材的数量可以视为无限),小明从到达餐厅开始就连续工作 \(T\) 时间.每道菜 ...
- 【Lua】Lua基础语法
1 Lua 简介 Lua 是一个小巧的脚本语言,用标准C语言编写而成,由巴西里约热内卢天主教大学的 Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henr ...
- Springboot实现remember-me记住我功能
1.什么是remeber-me? remeber-me即记住我功能,是我们在登录web系统时的常见勾选项.当我们登录一个web系统时除了输入常规的用户名.密码后还可以勾选记住我选项(假设该系统提供了该 ...
- 使用 Oracle PL/SQL NOCOPY 提示
参考文献: official document: http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/tuning.htm#LNPL ...
- 《深入理解Java虚拟机》(八) 记录一次OOM问题分析实战
目录 一.问题分析思路 二.主要问题概述以及分析 1.相关操作 2.主要问题现象 3.初步分析问题 三.相关工具介绍 四.实际问题快照分析 1.通过Memory查看老年代内存占用情况 2.选择Live ...
- 常见Python问题及解决办法
文件编码问题 如果Python文件中存在中文注释,在运行时报错"SyntaxError: Non-ASCII character '\xe7' in file". 解决办法: 在文 ...
- 如何设计一个高性能的图 Schema
本文整理自青藤云安全工程师--文洲在青藤云技术团队内部分享,分享视频参考:https://www.bilibili.com/video/BV1r64y1R72i 图数据库的性能和 schema 的设计 ...
- java数组案例
数组: 数组就是用来存储一批同类型数据的内存区域(容器) 数组中的最大值实现方法: 数据拿到程序中去,用数组装起来. 定义一个变量,用于记录最大值.这个变量建议默认存储第一个元素作 ...
