@mc-markets/ui 1.1.0 → 1.1.2
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.
- package/README.md +66 -0
- package/RESOLVER_USAGE.md +286 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/resolver.d.ts +16 -0
- package/dist/resolver.d.ts.map +1 -0
- package/package.json +10 -1
- package/packages/resolver.cjs +138 -0
- package/packages/resolver.d.ts +76 -0
- package/packages/resolver.js +135 -0
- package/vite.config.example.js +68 -0
package/README.md
CHANGED
|
@@ -17,6 +17,72 @@ Vue 3 组件库,基于 Element Plus 的自定义组件
|
|
|
17
17
|
npm i @mc-markets/ui
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
### 使用方式
|
|
21
|
+
|
|
22
|
+
#### 方式一:完整导入(推荐用于演示)
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
// main.js
|
|
26
|
+
import { createApp } from 'vue'
|
|
27
|
+
import App from './App.vue'
|
|
28
|
+
import McMarketsUI from '@mc-markets/ui'
|
|
29
|
+
import '@mc-markets/ui/dist/style'
|
|
30
|
+
|
|
31
|
+
const app = createApp(App)
|
|
32
|
+
app.use(McMarketsUI)
|
|
33
|
+
app.mount('#app')
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### 方式二:自动导入(推荐用于生产)⭐
|
|
37
|
+
|
|
38
|
+
使用 `unplugin-vue-components` 实现按需自动导入:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm i -D unplugin-vue-components
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
// vite.config.js
|
|
46
|
+
import { defineConfig } from 'vite'
|
|
47
|
+
import vue from '@vitejs/plugin-vue'
|
|
48
|
+
import Components from 'unplugin-vue-components/vite'
|
|
49
|
+
import { McMarketsUiResolver } from '@mc-markets/ui/resolver'
|
|
50
|
+
|
|
51
|
+
export default defineConfig({
|
|
52
|
+
plugins: [
|
|
53
|
+
vue(),
|
|
54
|
+
Components({
|
|
55
|
+
resolvers: [McMarketsUiResolver()]
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
})
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
然后就可以直接在模板中使用组件,无需手动导入:
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<template>
|
|
65
|
+
<m-button type="primary">按钮</m-button>
|
|
66
|
+
<m-input v-model="value" />
|
|
67
|
+
</template>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
📘 详细配置请查看 [Resolver 使用指南](./RESOLVER_USAGE.md)
|
|
71
|
+
|
|
72
|
+
#### 方式三:手动按需导入
|
|
73
|
+
|
|
74
|
+
```vue
|
|
75
|
+
<script setup>
|
|
76
|
+
import { MButton, MInput } from '@mc-markets/ui'
|
|
77
|
+
import '@mc-markets/ui/dist/style'
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<template>
|
|
81
|
+
<m-button type="primary">按钮</m-button>
|
|
82
|
+
<m-input v-model="value" />
|
|
83
|
+
</template>
|
|
84
|
+
```
|
|
85
|
+
|
|
20
86
|
### 文档开发模式
|
|
21
87
|
```bash
|
|
22
88
|
# 安装依赖
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# @mc-markets/ui Resolver 使用指南
|
|
2
|
+
|
|
3
|
+
## 什么是 Resolver?
|
|
4
|
+
|
|
5
|
+
Resolver 是 `unplugin-vue-components` 的一个功能,它可以自动识别和导入组件库的组件,无需手动导入。
|
|
6
|
+
|
|
7
|
+
## 安装
|
|
8
|
+
|
|
9
|
+
首先,确保你已经安装了必要的依赖:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @mc-markets/ui
|
|
13
|
+
npm install -D unplugin-vue-components
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 使用方法
|
|
17
|
+
|
|
18
|
+
### Vite 配置
|
|
19
|
+
|
|
20
|
+
#### ES 模块方式(推荐)
|
|
21
|
+
|
|
22
|
+
在你的 `vite.config.js` 或 `vite.config.ts` 中:
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import { defineConfig } from 'vite'
|
|
26
|
+
import vue from '@vitejs/plugin-vue'
|
|
27
|
+
import Components from 'unplugin-vue-components/vite'
|
|
28
|
+
import { McMarketsUiResolver } from '@mc-markets/ui/resolver'
|
|
29
|
+
|
|
30
|
+
export default defineConfig({
|
|
31
|
+
plugins: [
|
|
32
|
+
vue(),
|
|
33
|
+
Components({
|
|
34
|
+
resolvers: [
|
|
35
|
+
McMarketsUiResolver({
|
|
36
|
+
importStyle: true, // 自动导入样式
|
|
37
|
+
styleType: 'css', // 样式类型: 'css' | 'scss'
|
|
38
|
+
fallbackToElementPlus: false // 是否回退到 Element Plus
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
]
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### CommonJS 方式
|
|
47
|
+
|
|
48
|
+
如果你的配置文件使用 CommonJS 格式:
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
const { defineConfig } = require('vite')
|
|
52
|
+
const vue = require('@vitejs/plugin-vue')
|
|
53
|
+
const Components = require('unplugin-vue-components/vite')
|
|
54
|
+
const { McMarketsUiResolver } = require('@mc-markets/ui/resolver')
|
|
55
|
+
|
|
56
|
+
module.exports = defineConfig({
|
|
57
|
+
plugins: [
|
|
58
|
+
vue(),
|
|
59
|
+
Components({
|
|
60
|
+
resolvers: [
|
|
61
|
+
McMarketsUiResolver({
|
|
62
|
+
importStyle: true,
|
|
63
|
+
styleType: 'css'
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
> **💡 提示**: Resolver 自动支持 ES 模块和 CommonJS 两种格式,无需额外配置。
|
|
72
|
+
|
|
73
|
+
### Webpack 配置
|
|
74
|
+
|
|
75
|
+
在你的 `webpack.config.js` 中:
|
|
76
|
+
|
|
77
|
+
```js
|
|
78
|
+
const Components = require('unplugin-vue-components/webpack')
|
|
79
|
+
const { McMarketsUiResolver } = require('@mc-markets/ui/resolver')
|
|
80
|
+
|
|
81
|
+
module.exports = {
|
|
82
|
+
plugins: [
|
|
83
|
+
Components({
|
|
84
|
+
resolvers: [McMarketsUiResolver()]
|
|
85
|
+
})
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Rollup 配置
|
|
91
|
+
|
|
92
|
+
```js
|
|
93
|
+
import Components from 'unplugin-vue-components/rollup'
|
|
94
|
+
import { McMarketsUiResolver } from '@mc-markets/ui/resolver'
|
|
95
|
+
|
|
96
|
+
export default {
|
|
97
|
+
plugins: [
|
|
98
|
+
Components({
|
|
99
|
+
resolvers: [McMarketsUiResolver()]
|
|
100
|
+
})
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 配置选项
|
|
106
|
+
|
|
107
|
+
### importStyle
|
|
108
|
+
|
|
109
|
+
- **类型**: `boolean`
|
|
110
|
+
- **默认值**: `true`
|
|
111
|
+
- **说明**: 是否自动导入样式文件
|
|
112
|
+
|
|
113
|
+
```js
|
|
114
|
+
McMarketsUiResolver({
|
|
115
|
+
importStyle: true // 会自动导入组件样式
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### styleType
|
|
120
|
+
|
|
121
|
+
- **类型**: `'css' | 'scss'`
|
|
122
|
+
- **默认值**: `'css'`
|
|
123
|
+
- **说明**: 样式文件类型
|
|
124
|
+
|
|
125
|
+
```js
|
|
126
|
+
// 使用 CSS 样式(打包后的)
|
|
127
|
+
McMarketsUiResolver({
|
|
128
|
+
styleType: 'css' // 导入 @mc-markets/ui/dist/style
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// 使用 SCSS 样式(源文件)
|
|
132
|
+
McMarketsUiResolver({
|
|
133
|
+
styleType: 'scss' // 导入 @mc-markets/ui/styles/index
|
|
134
|
+
})
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
如果使用 `scss`,需要确保项目中配置了 SCSS 处理器。
|
|
138
|
+
|
|
139
|
+
### fallbackToElementPlus
|
|
140
|
+
|
|
141
|
+
- **类型**: `boolean`
|
|
142
|
+
- **默认值**: `false`
|
|
143
|
+
- **说明**: 对于未自定义的组件,是否回退到 Element Plus
|
|
144
|
+
|
|
145
|
+
```js
|
|
146
|
+
McMarketsUiResolver({
|
|
147
|
+
fallbackToElementPlus: true
|
|
148
|
+
})
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
当设置为 `true` 时,如果使用了 `@mc-markets/ui` 未自定义的组件(如 `MCard`),会尝试从库中导入转换后的 Element Plus 组件。
|
|
152
|
+
|
|
153
|
+
## 使用示例
|
|
154
|
+
|
|
155
|
+
配置好 resolver 后,你可以直接在模板中使用组件,无需手动导入:
|
|
156
|
+
|
|
157
|
+
```vue
|
|
158
|
+
<template>
|
|
159
|
+
<div>
|
|
160
|
+
<!-- 自动导入 MButton -->
|
|
161
|
+
<m-button type="primary">主要按钮</m-button>
|
|
162
|
+
|
|
163
|
+
<!-- 自动导入 MInput -->
|
|
164
|
+
<m-input v-model="value" placeholder="请输入" />
|
|
165
|
+
|
|
166
|
+
<!-- 自动导入 MDialog -->
|
|
167
|
+
<m-dialog v-model="visible" title="对话框">
|
|
168
|
+
<p>对话框内容</p>
|
|
169
|
+
</m-dialog>
|
|
170
|
+
</div>
|
|
171
|
+
</template>
|
|
172
|
+
|
|
173
|
+
<script setup>
|
|
174
|
+
import { ref } from 'vue'
|
|
175
|
+
|
|
176
|
+
const value = ref('')
|
|
177
|
+
const visible = ref(false)
|
|
178
|
+
</script>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## 与其他 Resolver 一起使用
|
|
182
|
+
|
|
183
|
+
你可以同时使用多个 resolver:
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
import { defineConfig } from 'vite'
|
|
187
|
+
import Components from 'unplugin-vue-components/vite'
|
|
188
|
+
import {
|
|
189
|
+
McMarketsUiResolver
|
|
190
|
+
} from '@mc-markets/ui/resolver'
|
|
191
|
+
import {
|
|
192
|
+
ElementPlusResolver,
|
|
193
|
+
VantResolver
|
|
194
|
+
} from 'unplugin-vue-components/resolvers'
|
|
195
|
+
|
|
196
|
+
export default defineConfig({
|
|
197
|
+
plugins: [
|
|
198
|
+
Components({
|
|
199
|
+
resolvers: [
|
|
200
|
+
McMarketsUiResolver(),
|
|
201
|
+
ElementPlusResolver(), // Element Plus 组件
|
|
202
|
+
VantResolver() // Vant 组件
|
|
203
|
+
]
|
|
204
|
+
})
|
|
205
|
+
]
|
|
206
|
+
})
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 支持的组件
|
|
210
|
+
|
|
211
|
+
目前支持自动导入的自定义组件包括:
|
|
212
|
+
|
|
213
|
+
- `MIcon` - 图标
|
|
214
|
+
- `MButton` - 按钮
|
|
215
|
+
- `MInput` - 输入框
|
|
216
|
+
- `MForm` - 表单
|
|
217
|
+
- `MFormItem` - 表单项
|
|
218
|
+
- `MTooltip` - 文字提示
|
|
219
|
+
- `MSelect` - 选择器
|
|
220
|
+
- `MOption` - 选项
|
|
221
|
+
- `MOptionGroup` - 选项组
|
|
222
|
+
- `MPagination` - 分页
|
|
223
|
+
- `MRadio` - 单选框
|
|
224
|
+
- `MRadioGroup` - 单选框组
|
|
225
|
+
- `MRadioButton` - 单选按钮
|
|
226
|
+
- `MSwitch` - 开关
|
|
227
|
+
- `MTag` - 标签
|
|
228
|
+
- `MAlert` - 警告
|
|
229
|
+
- `MDialog` - 对话框
|
|
230
|
+
- `MNotification` - 通知
|
|
231
|
+
- `MMessage` - 消息提示
|
|
232
|
+
- `MNotifiMessage` - 通知消息
|
|
233
|
+
- `MDatePicker` - 日期选择器
|
|
234
|
+
- `MEmpty` - 空状态
|
|
235
|
+
- `MTable` - 表格
|
|
236
|
+
- `MTableColumn` - 表格列
|
|
237
|
+
- `MBanner` - 横幅
|
|
238
|
+
- `MTabs` - 标签页
|
|
239
|
+
- `MTabPane` - 标签面板
|
|
240
|
+
- `MTabCard` - 标签卡片
|
|
241
|
+
- `MTabCardItem` - 标签卡片项
|
|
242
|
+
- `MBreadcrumb` - 面包屑
|
|
243
|
+
|
|
244
|
+
## 注意事项
|
|
245
|
+
|
|
246
|
+
1. **组件前缀**: 所有组件必须使用 `M` 前缀(如 `MButton`、`MInput`)才能被 resolver 识别。
|
|
247
|
+
|
|
248
|
+
2. **样式导入**:
|
|
249
|
+
- 如果使用 `styleType: 'css'`,会导入打包后的 CSS 文件
|
|
250
|
+
- 如果使用 `styleType: 'scss'`,会导入源 SCSS 文件,需要项目支持 SCSS
|
|
251
|
+
|
|
252
|
+
3. **按需加载**: Resolver 会自动实现按需加载,只导入你使用的组件。
|
|
253
|
+
|
|
254
|
+
4. **类型支持**: Resolver 提供了完整的 TypeScript 类型定义。
|
|
255
|
+
|
|
256
|
+
## 常见问题
|
|
257
|
+
|
|
258
|
+
### Q: 组件没有被自动导入?
|
|
259
|
+
|
|
260
|
+
A: 请确保:
|
|
261
|
+
1. 组件名称使用了 `M` 前缀(如 `<m-button>`)
|
|
262
|
+
2. Vite/Webpack 配置正确
|
|
263
|
+
3. 重启开发服务器
|
|
264
|
+
|
|
265
|
+
### Q: 样式没有生效?
|
|
266
|
+
|
|
267
|
+
A: 请检查:
|
|
268
|
+
1. `importStyle` 选项是否设置为 `true`
|
|
269
|
+
2. 如果使用 `styleType: 'scss'`,确保项目配置了 SCSS 处理器
|
|
270
|
+
|
|
271
|
+
### Q: 可以和 Element Plus 一起使用吗?
|
|
272
|
+
|
|
273
|
+
A: 可以!你可以同时使用 `McMarketsUiResolver` 和 `ElementPlusResolver`:
|
|
274
|
+
|
|
275
|
+
```js
|
|
276
|
+
resolvers: [
|
|
277
|
+
McMarketsUiResolver(),
|
|
278
|
+
ElementPlusResolver()
|
|
279
|
+
]
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## 更多资源
|
|
283
|
+
|
|
284
|
+
- [unplugin-vue-components 文档](https://github.com/antfu/unplugin-vue-components)
|
|
285
|
+
- [@mc-markets/ui 文档](https://daboluoxigua.github.io/mc-markets-ui/)
|
|
286
|
+
|