Skip to content

Commit

Permalink
build: 📦️ 拆分vite插件
Browse files Browse the repository at this point in the history
  • Loading branch information
ita-code committed Jan 29, 2024
1 parent caa2e71 commit 1cc4e70
Show file tree
Hide file tree
Showing 10 changed files with 87 additions and 172 deletions.
70 changes: 0 additions & 70 deletions components.d.ts

This file was deleted.

95 changes: 0 additions & 95 deletions src/types/auto-imports.d.ts

This file was deleted.

5 changes: 4 additions & 1 deletion src/typings/auto-imports.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
/**
* unplugin-auto-import 用于自动导入模块,提高开发效率。
*
* 这个文件是一个声明全局变量的 TypeScript 文件。
* 它使用了 declare global 来声明全局命名空间,然后导出了一系列常用的 Vue 和 Pinia 相关的函数和类型。
* 这些导出的函数和类型可以在项目中被其他模块引入和使用。
Expand Down Expand Up @@ -106,7 +108,8 @@ declare global {
Directive,
DirectiveBinding,
App,
CSSProperties
CSSProperties,
ElRef
} from "vue";
import("vue");
}
62 changes: 61 additions & 1 deletion src/typings/components.d.ts
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,70 @@
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
// https://juejin.cn/post/7012446423367024676
// unplugin-vue-components 则用于自动注册 Vue 组件。
// 原理是全量导入组件,但它会在编译时进行按需引入。
export {}

declare module "vue" {
export interface GlobalComponents {
ProTable: (typeof import("./../components/ProTable/index.vue"))["default"];
ECharts: (typeof import("./src/components/ECharts/index.vue"))["default"];
ElAside: (typeof import("element-plus/es"))["ElAside"];
ElAutocomplete: (typeof import("element-plus/es"))["ElAutocomplete"];
ElBadge: (typeof import("element-plus/es"))["ElBadge"];
ElBreadcrumb: (typeof import("element-plus/es"))["ElBreadcrumb"];
ElBreadcrumbItem: (typeof import("element-plus/es"))["ElBreadcrumbItem"];
ElButton: (typeof import("element-plus/es"))["ElButton"];
ElColorPicker: (typeof import("element-plus/es"))["ElColorPicker"];
ElContainer: (typeof import("element-plus/es"))["ElContainer"];
ElDialog: (typeof import("element-plus/es"))["ElDialog"];
ElDivider: (typeof import("element-plus/es"))["ElDivider"];
ElDrawer: (typeof import("element-plus/es"))["ElDrawer"];
ElDropdown: (typeof import("element-plus/es"))["ElDropdown"];
ElDropdownItem: (typeof import("element-plus/es"))["ElDropdownItem"];
ElDropdownMenu: (typeof import("element-plus/es"))["ElDropdownMenu"];
ElFooter: (typeof import("element-plus/es"))["ElFooter"];
ElForm: (typeof import("element-plus/es"))["ElForm"];
ElFormItem: (typeof import("element-plus/es"))["ElFormItem"];
ElHeader: (typeof import("element-plus/es"))["ElHeader"];
ElIcon: (typeof import("element-plus/es"))["ElIcon"];
ElInput: (typeof import("element-plus/es"))["ElInput"];
ElMain: (typeof import("element-plus/es"))["ElMain"];
ElMenu: (typeof import("element-plus/es"))["ElMenu"];
ElMenuItem: (typeof import("element-plus/es"))["ElMenuItem"];
ElPopover: (typeof import("element-plus/es"))["ElPopover"];
ElScrollbar: (typeof import("element-plus/es"))["ElScrollbar"];
ElSubMenu: (typeof import("element-plus/es"))["ElSubMenu"];
ElSwitch: (typeof import("element-plus/es"))["ElSwitch"];
ElTabPane: (typeof import("element-plus/es"))["ElTabPane"];
ElTabs: (typeof import("element-plus/es"))["ElTabs"];
ElTag: (typeof import("element-plus/es"))["ElTag"];
ElTooltip: (typeof import("element-plus/es"))["ElTooltip"];
ErrorPage: (typeof import("./src/components/ErrorPage/index.vue"))["default"];
Grid: (typeof import("./src/components/Grid/index.vue"))["default"];
GridItem: (typeof import("./src/components/Grid/components/GridItem.vue"))["default"];
Img: (typeof import("./src/components/Upload/Img.vue"))["default"];
Imgs: (typeof import("./src/components/Upload/Imgs.vue"))["default"];
ImportExcel: (typeof import("./src/components/ImportExcel/index.vue"))["default"];
Kbd: (typeof import("./src/components/Kbd/index.vue"))["default"];
Loading: (typeof import("./src/components/Loading/src/Loading.vue"))["default"];
Pagination: (typeof import("./src/components/ProTable/components/Pagination.vue"))["default"];
Popover: (typeof import("./src/components/popover/index.vue"))["default"];
ProTable: (typeof import("./src/components/ProTable/index.vue"))["default"];
RouterLink: (typeof import("vue-router"))["RouterLink"];
RouterView: (typeof import("vue-router"))["RouterView"];
SearchForm: (typeof import("./src/components/SearchForm/index.vue"))["default"];
SearchFormItem: (typeof import("./src/components/SearchForm/components/SearchFormItem.vue"))["default"];
SelectFilter: (typeof import("./src/components/SelectFilter/index.vue"))["default"];
SelectIcon: (typeof import("./src/components/SelectIcon/index.vue"))["default"];
SvgIcon: (typeof import("./src/components/SvgIcon/index.vue"))["default"];
SwitchDark: (typeof import("./src/components/SwitchDark/index.vue"))["default"];
TableColumn: (typeof import("./src/components/ProTable/components/TableColumn.vue"))["default"];
TreeFilter: (typeof import("./src/components/TreeFilter/index.vue"))["default"];
VirtualScroll: (typeof import("./src/components/VirtualScroll/index.vue"))["default"];
WangEditor: (typeof import("./src/components/WangEditor/index.vue"))["default"];
}
export interface ComponentCustomProperties {
vLoading: (typeof import("element-plus/es"))["ElLoadingDirective"];
ProTable: (typeof import("./src/components/ProTable/index.vue"))["default"];
}
}
8 changes: 8 additions & 0 deletions src/typings/global.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,11 @@ declare const __APP_INFO__: {
declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;

declare type Nullable<T> = T | null;

import { ProTable } from "@/components/ProTable/index.vue";
declare type ProTableType = InstanceType<typeof ProTable>;
// declare module "@vue/runtime-core" {
// interface ComponentCustomProperties {
// ProTable: ProTableType;
// }
// }
5 changes: 2 additions & 3 deletions src/views/system/menuMange/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@
import { ColumnProps } from "@/components/ProTable/interface";
import { Delete, EditPen, CirclePlus } from "@element-plus/icons-vue";
import authMenuList from "@/assets/json/authMenuList.json";
import ProTable from "@/components/ProTable/index.vue";
const proTable = ref();
// import ProTable from "@/components/ProTable/index.vue";
const proTable = ref<ProTableType>();
const menuData = ref(authMenuList.data);
// 表格配置项
Expand Down
2 changes: 1 addition & 1 deletion vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { defineConfig, loadEnv, ConfigEnv, UserConfig } from "vite";
import { resolve } from "path";
import { wrapperEnv } from "./build/getEnv";
import { createProxy } from "./build/proxy";
import { createVitePlugins } from "./build/plugins";
import { createVitePlugins } from "./vite/plugins";
import pkg from "./package.json";
import dayjs from "dayjs";

Expand Down
3 changes: 2 additions & 1 deletion build/auto-import.ts → vite/plugins/auto-import.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import autoImport from "unplugin-auto-import/vite";
export default function createAutoImport() {
return autoImport({
imports: ["vue", "vue-router", "pinia"],
dts: "./src/types/auto-imports.d.ts"
//配置文件位置
dts: "./src/typings/auto-imports.d.ts"
// dirs: ["./src/**"]
});
}
9 changes: 9 additions & 0 deletions vite/plugins/components.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import components from "unplugin-vue-components/vite";

export default function createComponents() {
return components({
dirs: ["src/components"],
include: [/\.vue$/, /\.vue\?vue/, /\.tsx$/],
dts: "./src/typings/components.d.ts"
});
}
File renamed without changes.

0 comments on commit 1cc4e70

Please sign in to comment.