@mc-markets/ui 1.0.91 → 1.0.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @mc-markets/ui 组件解析器
3
+ * 用于 unplugin-vue-components 和 unplugin-auto-import
4
+ *
5
+ * 支持自动导入组件和 API
6
+ */
7
+ /**
8
+ * 组件解析器
9
+ * @param {Object} options - 配置选项
10
+ * @param {string} options.prefix - 组件前缀,默认 'm'
11
+ * @param {boolean|'css'|'scss'} options.importStyle - 样式导入方式
12
+ * - false: 不导入样式(需要手动导入)
13
+ * - true 或 'css': 导入编译后的 CSS(推荐)
14
+ * - 'scss': 导入 SCSS 源文件
15
+ * @returns {Object} 解析器配置
16
+ */
17
+ export function McMarketsUIResolver(options?: {
18
+ prefix: string;
19
+ importStyle: boolean | "css" | "scss";
20
+ }): any;
21
+ /**
22
+ * API 自动导入配置
23
+ * 用于 unplugin-auto-import
24
+ */
25
+ export function getMcMarketsUIImports(): {
26
+ '@mc-markets/ui': string[];
27
+ };
28
+ export default McMarketsUIResolver;
29
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../packages/resolver.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,8CAPG;IAAwB,MAAM,EAAtB,MAAM;IACwB,WAAW,EAAzC,OAAO,GAAC,KAAK,GAAC,MAAM;CAI5B,OAiFF;AAED;;;GAGG;AACH;;EA+EC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mc-markets/ui",
3
3
  "private": false,
4
- "version": "1.0.91",
4
+ "version": "1.0.93",
5
5
  "type": "module",
6
6
  "author": "chenyu",
7
7
  "description": "Vue 3 组件库,基于 Element Plus 的自定义组件",
@@ -14,6 +14,11 @@
14
14
  "require": "./dist/index.cjs",
15
15
  "types": "./dist/index.d.ts"
16
16
  },
17
+ "./resolver": {
18
+ "import": "./packages/resolver.js",
19
+ "require": "./packages/resolver.js",
20
+ "types": "./packages/resolver.d.ts"
21
+ },
17
22
  "./styles/index": "./packages/styles/index.scss",
18
23
  "./styles/font": "./packages/styles/font/iconfont.css",
19
24
  "./styles/colorfont": "./packages/styles/colorfont/iconfont.css",
@@ -26,13 +31,27 @@
26
31
  "packages/components",
27
32
  "packages/hooks",
28
33
  "packages/utils",
29
- "README.md"
34
+ "packages/resolver.js",
35
+ "packages/resolver.d.ts",
36
+ "README.md",
37
+ "USAGE_GUIDE.md",
38
+ "QUICK_START.md",
39
+ "CHANGELOG.md",
40
+ "vite.config.example.js"
30
41
  ],
31
42
  "keywords": [
32
43
  "vue3",
44
+ "vue",
33
45
  "element-plus",
34
46
  "ui-library",
35
- "components"
47
+ "components",
48
+ "auto-import",
49
+ "unplugin",
50
+ "unplugin-vue-components",
51
+ "unplugin-auto-import",
52
+ "vite",
53
+ "webpack",
54
+ "typescript"
36
55
  ],
37
56
  "license": "MIT",
38
57
  "scripts": {
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @mc-markets/ui 组件解析器类型声明
3
+ */
4
+
5
+ /**
6
+ * 解析器配置选项
7
+ */
8
+ export interface McMarketsUIResolverOptions {
9
+ /**
10
+ * 组件前缀
11
+ * @default 'm'
12
+ * @example 'm' -> MButton, MInput
13
+ */
14
+ prefix?: string
15
+
16
+ /**
17
+ * 是否自动导入样式
18
+ * @default true
19
+ */
20
+ importStyle?: boolean
21
+ }
22
+
23
+ /**
24
+ * 组件解析结果
25
+ */
26
+ export interface ComponentResolveResult {
27
+ /**
28
+ * 组件名称
29
+ */
30
+ name: string
31
+
32
+ /**
33
+ * 导入路径
34
+ */
35
+ from: string
36
+
37
+ /**
38
+ * 副作用导入(如样式文件)
39
+ */
40
+ sideEffects?: string
41
+ }
42
+
43
+ /**
44
+ * 组件解析器
45
+ */
46
+ export interface Resolver {
47
+ type: 'component'
48
+ resolve: (name: string) => ComponentResolveResult | undefined
49
+ }
50
+
51
+ /**
52
+ * 自动导入配置
53
+ */
54
+ export interface AutoImportConfig {
55
+ '@mc-markets/ui': string[]
56
+ }
57
+
58
+ /**
59
+ * 创建 McMarketsUI 组件解析器
60
+ *
61
+ * @param options - 解析器配置选项
62
+ * @returns 解析器对象
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { McMarketsUIResolver } from '@mc-markets/ui/resolver'
67
+ * import Components from 'unplugin-vue-components/vite'
68
+ *
69
+ * export default {
70
+ * plugins: [
71
+ * Components({
72
+ * resolvers: [
73
+ * McMarketsUIResolver({
74
+ * prefix: 'm',
75
+ * importStyle: true
76
+ * })
77
+ * ]
78
+ * })
79
+ * ]
80
+ * }
81
+ * ```
82
+ */
83
+ export declare function McMarketsUIResolver(
84
+ options?: McMarketsUIResolverOptions
85
+ ): Resolver
86
+
87
+ /**
88
+ * 获取 McMarketsUI 自动导入配置
89
+ *
90
+ * @returns 自动导入配置对象
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * import { getMcMarketsUIImports } from '@mc-markets/ui/resolver'
95
+ * import AutoImport from 'unplugin-auto-import/vite'
96
+ *
97
+ * export default {
98
+ * plugins: [
99
+ * AutoImport({
100
+ * imports: [
101
+ * 'vue',
102
+ * getMcMarketsUIImports()
103
+ * ]
104
+ * })
105
+ * ]
106
+ * }
107
+ * ```
108
+ */
109
+ export declare function getMcMarketsUIImports(): AutoImportConfig
110
+
111
+ /**
112
+ * 默认导出解析器
113
+ */
114
+ export default McMarketsUIResolver
115
+
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @mc-markets/ui 组件解析器
3
+ * 用于 unplugin-vue-components 和 unplugin-auto-import
4
+ *
5
+ * 支持自动导入组件和 API
6
+ */
7
+
8
+ /**
9
+ * 组件解析器
10
+ * @param {Object} options - 配置选项
11
+ * @param {string} options.prefix - 组件前缀,默认 'm'
12
+ * @param {boolean|'css'|'scss'} options.importStyle - 样式导入方式
13
+ * - false: 不导入样式(需要手动导入)
14
+ * - true 或 'css': 导入编译后的 CSS(推荐)
15
+ * - 'scss': 导入 SCSS 源文件
16
+ * @returns {Object} 解析器配置
17
+ */
18
+ export function McMarketsUIResolver(options = {}) {
19
+ const {
20
+ prefix = 'm',
21
+ importStyle = 'css'
22
+ } = options
23
+
24
+ // 标记是否已导入样式(避免重复导入)
25
+ let styleImported = false
26
+
27
+ return {
28
+ type: 'component',
29
+ resolve: (name) => {
30
+ // 只处理指定前缀的组件
31
+ const prefixPattern = new RegExp(`^${prefix}(?:-|[A-Z])`, 'i')
32
+ if (!prefixPattern.test(name)) {
33
+ return
34
+ }
35
+
36
+ // 组件名映射表(处理特殊命名)
37
+ const componentMap = {
38
+ // 自定义组件
39
+ 'MIcon': 'Icon',
40
+ 'MButton': 'Button',
41
+ 'MInput': 'Input',
42
+ 'MForm': 'Form',
43
+ 'MFormItem': 'FormItem',
44
+ 'MTooltip': 'Tooltip',
45
+ 'MSelect': 'Select',
46
+ 'MOption': 'Option',
47
+ 'MOptionGroup': 'OptionGroup',
48
+ 'MPagination': 'Pagination',
49
+ 'MRadio': 'Radio',
50
+ 'MRadioGroup': 'RadioGroup',
51
+ 'MRadioButton': 'RadioButton',
52
+ 'MSwitch': 'Switch',
53
+ 'MTag': 'Tag',
54
+ 'MAlert': 'Alert',
55
+ 'MDialog': 'Dialog',
56
+ 'MNotification': 'Notification',
57
+ 'MMessage': 'Message',
58
+ 'MNotifiMessage': 'NotifiMessage',
59
+ 'MDatePicker': 'DatePicker',
60
+ 'MEmpty': 'Empty',
61
+ 'MTable': 'Table',
62
+ 'MTableColumn': 'TableColumn',
63
+ 'MBanner': 'Banner',
64
+ 'MTabs': 'Tabs',
65
+ 'MTabPane': 'TabPane',
66
+ 'MTabCard': 'TabCard',
67
+ 'MTabCardItem': 'TabCardItem',
68
+ 'MBreadcrumb': 'Breadcrumb',
69
+ 'MBreadcrumbSeparator': 'BreadcrumbSeparator',
70
+ }
71
+
72
+ // 检查是否是已定义的组件
73
+ const componentName = componentMap[name]
74
+
75
+ if (componentName || name.startsWith('M')) {
76
+ // 确定样式文件路径
77
+ let sideEffects
78
+
79
+ if (importStyle && !styleImported) {
80
+ if (importStyle === 'scss') {
81
+ sideEffects = '@mc-markets/ui/packages/styles/index.scss'
82
+ } else if (importStyle === true || importStyle === 'css') {
83
+ sideEffects = '@mc-markets/ui/dist/style.css'
84
+ }
85
+ styleImported = true
86
+ }
87
+
88
+ // 返回组件导入配置
89
+ return {
90
+ name,
91
+ from: '@mc-markets/ui',
92
+ sideEffects
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ /**
100
+ * API 自动导入配置
101
+ * 用于 unplugin-auto-import
102
+ */
103
+ export function getMcMarketsUIImports() {
104
+ return {
105
+ '@mc-markets/ui': [
106
+ // 组件
107
+ 'MIcon',
108
+ 'MButton',
109
+ 'MInput',
110
+ 'MForm',
111
+ 'MFormItem',
112
+ 'MTooltip',
113
+ 'MSelect',
114
+ 'MOption',
115
+ 'MOptionGroup',
116
+ 'MPagination',
117
+ 'MRadio',
118
+ 'MRadioGroup',
119
+ 'MRadioButton',
120
+ 'MSwitch',
121
+ 'MTag',
122
+ 'MAlert',
123
+ 'MDialog',
124
+ 'MNotification',
125
+ 'MMessage',
126
+ 'MNotifiMessage',
127
+ 'MDatePicker',
128
+ 'MEmpty',
129
+ 'MTable',
130
+ 'MTableColumn',
131
+ 'MBanner',
132
+ 'MTabs',
133
+ 'MTabPane',
134
+ 'MTabCard',
135
+ 'MTabCardItem',
136
+ 'MBreadcrumb',
137
+
138
+ // API 方法
139
+ 'Message',
140
+ 'NotifiMessage',
141
+ 'MMessageBox',
142
+
143
+ // 工具函数
144
+ 'addOverrideClass',
145
+ 'addComponentOverride',
146
+ 'applyGlobalOverride',
147
+ 'forceRefreshStyles',
148
+ 'createOverrideComponent',
149
+ 'checkComponentRegistration',
150
+
151
+ // Element Plus 转换组件
152
+ 'MButtonGroup',
153
+ 'MCarousel',
154
+ 'MCarouselItem',
155
+ 'MCascader',
156
+ 'MCascaderPanel',
157
+ 'MCheckTag',
158
+ 'MCalendar',
159
+ 'MTimePicker',
160
+ 'MDateTimePicker',
161
+ 'MColorPicker',
162
+ 'MTransfer',
163
+ 'MTree',
164
+ 'MTreeSelect',
165
+ 'MUpload',
166
+ 'MImage',
167
+ 'MImageViewer',
168
+ 'MBacktop',
169
+ 'MInfiniteScroll',
170
+ 'MAffix',
171
+ 'MScrollbar',
172
+ 'MResult',
173
+ 'MSkeleton',
174
+ 'MLoading',
175
+ 'MSpinner',
176
+ 'MProgress',
177
+ 'MBadge',
178
+ 'MAvatar',
179
+ 'MConfigProvider'
180
+ ]
181
+ }
182
+ }
183
+
184
+ // 默认导出解析器
185
+ export default McMarketsUIResolver
186
+
@@ -0,0 +1,161 @@
1
+ /**
2
+ * 这是一个使用 @mc-markets/ui 的 Vite 配置示例
3
+ * 包含了自动按需导入的完整配置
4
+ *
5
+ * 使用方法:
6
+ * 1. 复制此文件并重命名为 vite.config.js
7
+ * 2. 安装必要的依赖:
8
+ * npm install -D unplugin-auto-import unplugin-vue-components
9
+ * 3. 根据你的项目需求调整配置
10
+ */
11
+
12
+ import { defineConfig } from 'vite'
13
+ import vue from '@vitejs/plugin-vue'
14
+ import AutoImport from 'unplugin-auto-import/vite'
15
+ import Components from 'unplugin-vue-components/vite'
16
+ import { McMarketsUIResolver, getMcMarketsUIImports } from '@mc-markets/ui/resolver'
17
+
18
+ export default defineConfig({
19
+ plugins: [
20
+ vue(),
21
+
22
+ /**
23
+ * 自动导入组件
24
+ * 配置后可以直接在模板中使用组件,无需手动导入
25
+ */
26
+ Components({
27
+ resolvers: [
28
+ McMarketsUIResolver({
29
+ // 组件前缀,默认为 'm'
30
+ // 例如:MButton, MInput, m-button, m-input
31
+ prefix: 'm',
32
+
33
+ // 是否自动导入样式,默认为 true
34
+ // 设置为 true 时会自动导入组件库的样式文件
35
+ importStyle: true
36
+ })
37
+ ],
38
+
39
+ // 生成组件类型声明文件的路径
40
+ // TypeScript 项目推荐开启
41
+ dts: 'src/components.d.ts',
42
+
43
+ // 自动导入的本地组件目录
44
+ // 配置后,这些目录下的组件也会自动导入
45
+ dirs: ['src/components'],
46
+
47
+ // 组件的有效文件扩展名
48
+ extensions: ['vue'],
49
+
50
+ // 是否深度搜索子目录
51
+ deep: true,
52
+
53
+ // 包含的文件匹配模式
54
+ include: [/\.vue$/, /\.vue\?vue/],
55
+
56
+ // 排除的文件匹配模式
57
+ exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
58
+ }),
59
+
60
+ /**
61
+ * 自动导入 API
62
+ * 配置后可以直接使用 Vue API 和组件库 API,无需手动导入
63
+ */
64
+ AutoImport({
65
+ imports: [
66
+ // 自动导入 Vue 相关函数
67
+ 'vue',
68
+
69
+ // 如果使用 Vue Router,可以取消下面这行的注释
70
+ // 'vue-router',
71
+
72
+ // 如果使用 Pinia,可以取消下面这行的注释
73
+ // 'pinia',
74
+
75
+ // 自动导入 @mc-markets/ui 的 API
76
+ // 包括:Message, NotifiMessage, MMessageBox 等
77
+ getMcMarketsUIImports()
78
+ ],
79
+
80
+ // 生成 API 类型声明文件的路径
81
+ // TypeScript 项目推荐开启
82
+ dts: 'src/auto-imports.d.ts',
83
+
84
+ // 自动导入的本地目录
85
+ // dirs: ['src/composables', 'src/utils'],
86
+
87
+ // 为 ESLint 生成配置文件
88
+ eslintrc: {
89
+ enabled: true, // 首次运行时设为 true,生成后可改为 false
90
+ filepath: './.eslintrc-auto-import.json',
91
+ globalsPropValue: true,
92
+ },
93
+
94
+ // 自动导入的类型
95
+ // resolvers: [],
96
+ })
97
+ ],
98
+
99
+ /**
100
+ * 开发服务器配置
101
+ */
102
+ server: {
103
+ port: 3000,
104
+ open: true,
105
+ cors: true,
106
+ },
107
+
108
+ /**
109
+ * 构建配置
110
+ */
111
+ build: {
112
+ // 目标浏览器
113
+ target: 'es2015',
114
+
115
+ // 是否生成 source map
116
+ sourcemap: false,
117
+
118
+ // chunk 大小警告的限制
119
+ chunkSizeWarningLimit: 1500,
120
+
121
+ // rollup 配置
122
+ rollupOptions: {
123
+ output: {
124
+ // 分包策略
125
+ manualChunks: {
126
+ // 将 Vue 相关的包打包在一起
127
+ vue: ['vue', 'vue-router'],
128
+
129
+ // 将 @mc-markets/ui 和 Element Plus 打包在一起
130
+ 'ui-vendor': ['@mc-markets/ui', 'element-plus'],
131
+ }
132
+ }
133
+ }
134
+ },
135
+
136
+ /**
137
+ * CSS 相关配置
138
+ */
139
+ css: {
140
+ preprocessorOptions: {
141
+ scss: {
142
+ // 自动导入全局 SCSS 变量和 mixins
143
+ additionalData: `
144
+ // 如果需要自定义样式变量,可以在这里导入
145
+ // @import "@/styles/variables.scss";
146
+ `
147
+ }
148
+ }
149
+ },
150
+
151
+ /**
152
+ * 路径别名配置
153
+ */
154
+ resolve: {
155
+ alias: {
156
+ '@': '/src',
157
+ // 如果需要其他别名,可以在这里添加
158
+ }
159
+ }
160
+ })
161
+