@lemon30_npm/csit-vue3 1.0.43 → 1.0.45
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.dev.md +10 -0
- package/README.md +36 -199
- package/dist/csit-vue3.js +621 -641
- package/dist/favicon.ico +0 -0
- package/dist/index.css +1 -1
- package/dist/lib/ci-common-list/ci-common-list-layout/index.css +1 -1
- package/dist/lib/ci-common-list/ci-common-list-layout/index.vue.js +2 -2
- package/dist/lib/ci-common-list/ci-common-list-layout/index.vue2.js +38 -38
- package/dist/lib/ci-common-list/ci-common-list-query/index.css +1 -1
- package/dist/lib/ci-common-list/ci-common-list-query/index.vue.js +2 -2
- package/dist/lib/ci-common-list/ci-common-list-query/index.vue2.js +25 -22
- package/dist/lib/ci-page-header/assets/btnBack.svg.js +4 -0
- package/dist/lib/ci-page-header/index.css +1 -1
- package/dist/lib/ci-page-header/index.vue.js +2 -2
- package/dist/lib/ci-page-header/index.vue2.js +28 -32
- package/dist/lib/ci-time-line-list/index.css +1 -1
- package/dist/lib/ci-time-line-list/index.vue.js +2 -2
- package/dist/lib/ci-time-line-list/index.vue2.js +11 -12
- package/dist/lib/ci-upload/hooks/useUpload.js +32 -29
- package/dist/lib/ci-upload/hooks/useUploadRetry.js +26 -16
- package/dist/lib/ci-upload/index.css +1 -1
- package/dist/lib/ci-upload/index.vue.js +2 -2
- package/dist/lib/ci-upload/index.vue2.js +78 -69
- package/dist/lib/ci-upload/props/index.js +6 -0
- package/dist/lib/ci-upload/utils/appendFormData.js +9 -0
- package/dist/lib/favicon.ico +0 -0
- package/dist/lib/styles/reset-elementPlus/index.css +1 -1
- package/dist/types/src/components/components-project/ci-upload/index.vue.d.ts +5 -0
- package/dist/types/src/components/components-project/ci-upload/props/index.d.ts +3 -0
- package/dist/types/src/components/components-project/ci-upload/type.d.ts +3 -0
- package/dist/types/src/components/components-project/ci-upload/utils/appendFormData.d.ts +6 -0
- package/package.json +4 -3
- package/dist/lib/ci-time-line-list/model/index.js +0 -56
package/README.dev.md
CHANGED
|
@@ -472,6 +472,16 @@ export default [
|
|
|
472
472
|
|
|
473
473
|
### 5.4 发布组件库到 NPM
|
|
474
474
|
|
|
475
|
+
:::tip
|
|
476
|
+
**发布前的认证:必须先登录一次**
|
|
477
|
+
|
|
478
|
+
执行一次:`npm run login:internal`
|
|
479
|
+
|
|
480
|
+
输入你的账号密码,npm会把token 缓存到本地(~/.npmrc 用户级别),下次发布就可以直接使用缓存的 token,`之后每次 publish 都不需要再输入账号密码了`
|
|
481
|
+
|
|
482
|
+
账号: `public` 密码: `public` 邮箱: `public@csits.org.cn`
|
|
483
|
+
:::
|
|
484
|
+
|
|
475
485
|
| **命令** | **说明** |
|
|
476
486
|
| ----------- | ------------------------------------------------------- |
|
|
477
487
|
| npm publish | 将构建完成的组件库发布到 NPM 仓库,供业务项目安装使用。 |
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🧩 csit-vue3 组件库
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个基于 Vue 3 + Element Plus 封装的业务组件库,提供统一的 UI 规范和业务逻辑组件,提升团队开发效率。
|
|
4
4
|
|
|
5
5
|
## 1. 安装方式
|
|
6
6
|
|
|
@@ -16,30 +16,20 @@ pnpm add csit-vue3
|
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
⚠️ 注意:该组件库依赖以下环境,请确保你的项目已安装(如果你使用Vue 3项目脚手架,请忽略)
|
|
20
|
-
|
|
21
|
-
> 版本可自行升级,无影响
|
|
22
|
-
|
|
23
|
-
- "vue": "^3.5.12"
|
|
24
|
-
- "echarts": "^5.5.1"
|
|
25
|
-
- "echarts-map": "^3.0.1"
|
|
26
|
-
- "element-plus": "^2.9.7"
|
|
27
|
-
- "@element-plus/icons-vue": "^2.3.1"
|
|
28
|
-
- "axios": "^1.7.7"
|
|
29
|
-
- "nanoid": "^5.0.8"
|
|
30
|
-
- "pinia": "^2.2.6"
|
|
31
|
-
- "vue-router": "^4.4.5"
|
|
32
|
-
- "moment": "^2.30.1"
|
|
33
|
-
- "lodash": "^4.17.21"
|
|
34
|
-
|
|
35
19
|
## 2. 快速开始
|
|
36
20
|
|
|
37
|
-
|
|
21
|
+
本节将介绍如何在项目中使用 cist-vue3。
|
|
38
22
|
|
|
39
23
|
### 2.1. 完整引入
|
|
40
24
|
|
|
41
25
|
如果你对打包后的文件大小不是很在乎,那么使用完整导入会更方便。
|
|
42
26
|
|
|
27
|
+
:::tip
|
|
28
|
+
|
|
29
|
+
引入 `csit-vue3` 样式的代码,须放置在 `Element Plus` 的样式之后
|
|
30
|
+
|
|
31
|
+
:::
|
|
32
|
+
|
|
43
33
|
在 main.ts 中写入以下内容:
|
|
44
34
|
|
|
45
35
|
```ts
|
|
@@ -62,7 +52,18 @@ app.mount("#app");
|
|
|
62
52
|
|
|
63
53
|
### 2.2. 按需导入
|
|
64
54
|
|
|
65
|
-
|
|
55
|
+
组件库默认支持按需引入,你可以只引入你所需要的组件,而无需引入整个组件库。
|
|
56
|
+
|
|
57
|
+
:::tip
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
// 样式已做按需导入[文档中不对按需导入样式做解释],但不建议按需导入, 建议 main.ts 中直接全量导入, 清晰且不易出现问题
|
|
61
|
+
|
|
62
|
+
// main.ts
|
|
63
|
+
import "csit-vue3/dist/index.css";
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
:::
|
|
66
67
|
|
|
67
68
|
#### 2.2.1. 示例: `main.ts`按需导入
|
|
68
69
|
|
|
@@ -70,17 +71,8 @@ app.mount("#app");
|
|
|
70
71
|
|
|
71
72
|
```ts
|
|
72
73
|
// main.ts
|
|
73
|
-
import CiUpload from 'csit-vue3/ci-upload';
|
|
74
|
-
// 单一组件样式支持按需导入
|
|
75
|
-
import "csit-vue3/ci-upload/style/index.css;
|
|
76
|
-
|
|
77
|
-
import CiCommonListLayout from 'csit-vue3/ci-common-list-layout';
|
|
78
|
-
// 单一组件样式支持按需导入
|
|
79
|
-
import "csit-vue3/ci-common-list-layout/style/index.css;
|
|
80
74
|
|
|
81
|
-
import CiPageHeader from 'csit-vue3
|
|
82
|
-
// 单一组件样式支持按需导入
|
|
83
|
-
import "csit-vue3/ci-page-header/style/index.css;
|
|
75
|
+
import { CiUpload, CiCommonListLayout, CiPageHeader } from 'csit-vue3';
|
|
84
76
|
|
|
85
77
|
app.component(CiUpload.name, CiUpload);
|
|
86
78
|
app.component(CiCommonListLayout.name, CiCommonListLayout);
|
|
@@ -93,12 +85,6 @@ app.component(CiPageHeader.name, CiPageHeader);
|
|
|
93
85
|
* app.use(CiPageHeader)
|
|
94
86
|
* ...
|
|
95
87
|
*/
|
|
96
|
-
|
|
97
|
-
// 单个组件中使用某个组件 - 直接引入 无需注册
|
|
98
|
-
import CiUpload from 'csit-vue3/ci-upload'
|
|
99
|
-
|
|
100
|
-
// 单个组件中使用某个组件 - 直接引入 无需注册
|
|
101
|
-
import CiPageHeader from 'csit-vue3/ci-page-header'
|
|
102
88
|
```
|
|
103
89
|
|
|
104
90
|
#### 2.2.2. 示例: `.vue`单组件中使用某个组件
|
|
@@ -109,183 +95,25 @@ import CiPageHeader from 'csit-vue3/ci-page-header'
|
|
|
109
95
|
</template>
|
|
110
96
|
|
|
111
97
|
<script lang="ts" setup>
|
|
112
|
-
|
|
113
|
-
import CiBlueLineTitle from 'csit-vue3/ci-blue-line-title'
|
|
98
|
+
import { CiBlueLineTitle } from 'csit-vue3'
|
|
114
99
|
</script>
|
|
115
|
-
|
|
116
|
-
<style lang="less" scoped>
|
|
117
|
-
</style>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
#### 2.2.3. 按需导入规则和建议
|
|
121
|
-
|
|
122
|
-
相信细心的小伙伴们会有疑问了❓ 按需导入时 import xxx from 'csit-vue3/yyy'; 后面的yyy是什么值呢❓
|
|
123
|
-
|
|
124
|
-
##### 2.2.3.1. 规则解释如下
|
|
125
|
-
|
|
126
|
-
```ts
|
|
127
|
-
// 组件导入模版
|
|
128
|
-
import xxx from 'csit-vue3/yyy';
|
|
129
|
-
// 示例
|
|
130
|
-
import CiCommonListLayout from 'csit-vue3/ci-common-list-layout';
|
|
131
|
-
|
|
132
|
-
// xxx: xxx值建议为大驼峰命名法;且值为 Vue3组件库文档 站点中你看到的示例名字; 比如: CiUpload、CiPageHeader 做到大家行业约定俗成的见名知意;
|
|
133
|
-
|
|
134
|
-
// yyy: 值为 Vue3组件库文档 站点中你看到的示例名字的 “kebab-case”(短横线连接命名)又称:(烤肉串命名法)比如你使用: CiPageHeader, 则 from 'csit-vue3/ci-page-header'; 使用: CiCommonListLayout, 则: from 'csit-vue3/ci-common-list-layout';
|
|
135
|
-
|
|
136
|
-
// 样式导入模版
|
|
137
|
-
import "csit-vue3/zzz/style/index.css;
|
|
138
|
-
//示例
|
|
139
|
-
import "csit-vue3/ci-common-list-layout/style/index.css;
|
|
140
|
-
|
|
141
|
-
// zzz: zzz值同理yyy值解释
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
##### 2.2.3.2. 建议📢
|
|
145
|
-
|
|
146
|
-
```ts
|
|
147
|
-
// 样式不建议按需导入, 建议 main.ts 中直接全量导入, 清晰且不易出现问题
|
|
148
|
-
|
|
149
|
-
// main.ts
|
|
150
|
-
import "csit-vue3/dist/index.css";
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
##### `番外:` **常见命名风格比较**
|
|
154
|
-
|
|
155
|
-
| **风格** | **示例** | **常见场景** |
|
|
156
|
-
| ---------- | ------------------ | ---------------------------------------- |
|
|
157
|
-
| camelCase | ciBlueLineTitle | JS 变量、函数名 |
|
|
158
|
-
| PascalCase | CiBlueLineTitle | Vue/React 组件名 |
|
|
159
|
-
| snake_case | ci_blue_line_title | Python变量、文件名、数据库字段 |
|
|
160
|
-
| kebab-case | ci-blue-line-title | 文件/文件夹、HTML/CSS 类名、自定义组件名 |
|
|
161
|
-
|
|
162
|
-
### 2.3. "优雅的"按需导入(自动导入)【!!!推荐】
|
|
163
|
-
|
|
164
|
-
> 为你使用的 csit-vue3 组件库提供一个 unplugin-vue-components 的 Resolver,就像 ElementPlusResolver 一样,支持按名称自动引入组件。
|
|
165
|
-
|
|
166
|
-
#### 2.3.1. 背景介绍
|
|
167
|
-
|
|
168
|
-
`Element Plus`按需导入之自动导入写法(点击查看[官方文档🔗](https://element-plus.org/zh-CN/guide/quickstart.html#%E6%8C%89%E9%9C%80%E5%AF%BC%E5%85%A5))
|
|
169
|
-
|
|
170
|
-
```ts
|
|
171
|
-
// 官网中有这么一句, 但是我们项目中不能 从 unplugin-vue-components 插件中导出 csit-vue3 的解析器
|
|
172
|
-
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
|
173
100
|
```
|
|
174
101
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
因为:
|
|
178
|
-
|
|
179
|
-
- `unplugin-vue-components` 官方内置了 **对主流 UI 框架(如 `Element Plus`、`Ant Design Vue`、`Vuetify`)的解析器**
|
|
180
|
-
- 这些内置的 resolver 都在 `unplugin-vue-components/resolvers` 中暴露了出来
|
|
181
|
-
- `Element Plus` 官方团队也专门配合封装了 ElementPlusResolver
|
|
182
|
-
|
|
183
|
-
🔗 官方文档:<https://github.com/antfu/unplugin-vue-components#resolvers>
|
|
184
|
-
|
|
185
|
-
**如何让你自己使用的 csit-vue3 组件库也能像ElementPlusResolver那样?**
|
|
186
|
-
|
|
187
|
-
- 很简单,你只需要自己手动写一个 Resolver
|
|
188
|
-
|
|
189
|
-
#### 2.3.2. 实战代码示例
|
|
102
|
+
### 2.3. 按需导入(自动导入)【推荐】
|
|
190
103
|
|
|
191
|
-
|
|
104
|
+
csit-vue3 组件库提供一个 unplugin-vue-components 的 Resolver,就像 ElementPlusResolver 一样,支持按名称自动引入组件。
|
|
192
105
|
|
|
193
|
-
1.
|
|
194
|
-
2. 你需要手写一个 Resolver。
|
|
195
|
-
3. 把`unplugin-vue-components`插件配置到 `Vite` 的配置文件中
|
|
196
|
-
|
|
197
|
-
##### 2.3.2.2. 安装插件
|
|
106
|
+
#### 2.3.1. 安装插件
|
|
198
107
|
|
|
199
108
|
```bash
|
|
200
109
|
npm install -D unplugin-vue-components
|
|
201
110
|
```
|
|
202
111
|
|
|
203
|
-
|
|
112
|
+
#### 2.3.2. 把`unplugin-vue-components`插件配置到你的 `Vite` 的配置文件中
|
|
204
113
|
|
|
205
114
|
```ts
|
|
206
|
-
|
|
207
|
-
* 自定义组件库解析器:CsitComponentResolver
|
|
208
|
-
* 用于配合 unplugin-vue-components 实现按名称自动导入
|
|
209
|
-
* 比如:使用 <CiUpload /> 会自动解析为 csit-vue3/ci-upload
|
|
210
|
-
*/
|
|
211
|
-
export function CsitComponentResolver() {
|
|
212
|
-
return {
|
|
213
|
-
type: 'component',
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* name 是你在模板中写的组件名,比如 <CiUpload />,这里接收到的是 "CiUpload"
|
|
217
|
-
*/
|
|
218
|
-
resolve(name: string) {
|
|
219
|
-
// 判断组件名是否符合 ci- 开头的组件,比如:CiUpload -> ci-upload
|
|
220
|
-
if (!/^Ci[A-Z]/.test(name)) return
|
|
221
|
-
|
|
222
|
-
// 将 PascalCase 转为 kebab-case(CiUpload → ci-upload)
|
|
223
|
-
const kebabName = name
|
|
224
|
-
.replace(/^Ci/, 'ci-') // 去掉首字母 Ci
|
|
225
|
-
.replace(/([a-z0-9])([A-Z])/g, '$1-$2') // 大写转短横线
|
|
226
|
-
.toLowerCase()
|
|
227
|
-
|
|
228
|
-
// 返回路径:配合 exports 字段实现自动导入
|
|
229
|
-
return {
|
|
230
|
-
name, // 保持原组件名
|
|
231
|
-
from: `csit-vue3/${kebabName}`, // 自动解析导入路径
|
|
232
|
-
}
|
|
233
|
-
},
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
```
|
|
115
|
+
// vite.config.ts
|
|
237
116
|
|
|
238
|
-
##### 2.3.2.4. 把`unplugin-vue-components`插件配置到 `Vite` 的配置文件中
|
|
239
|
-
|
|
240
|
-
```ts
|
|
241
|
-
import { defineConfig } from 'vite'
|
|
242
|
-
import Components from 'unplugin-vue-components/vite'
|
|
243
|
-
import { CsitComponentResolver } from './path/to/your-resolver' // 你定义的 Resolver 放在哪里了就从哪里导入
|
|
244
|
-
|
|
245
|
-
export default defineConfig({
|
|
246
|
-
plugins: [
|
|
247
|
-
Components({
|
|
248
|
-
resolvers: [CsitComponentResolver()],
|
|
249
|
-
}),
|
|
250
|
-
],
|
|
251
|
-
})
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
> [!WARNING]
|
|
255
|
-
>
|
|
256
|
-
> ⚠️ 注意:样式文件我们就不支持按需导入了,我们建议:在 main.ts 中全量引入所有组件样式
|
|
257
|
-
|
|
258
|
-
```ts
|
|
259
|
-
// 样式不建议按需导入, 建议 main.ts 中直接全量导入, 清晰且不易出现问题
|
|
260
|
-
|
|
261
|
-
// main.ts
|
|
262
|
-
import "csit-vue3/dist/index.css";
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
至此结束,你应该在某个页面写下:
|
|
266
|
-
|
|
267
|
-
运行后应该不报错且能渲染。至此 验证结束 大功告成✅。
|
|
268
|
-
|
|
269
|
-
```vue
|
|
270
|
-
<template>
|
|
271
|
-
<CiUpload />
|
|
272
|
-
<CiBlueLineTitle />
|
|
273
|
-
</template>
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
>
|
|
277
|
-
> ❗注意:
|
|
278
|
-
>
|
|
279
|
-
> 不要在当前vue页面手动 import,不要在当前vue页面手动注册。
|
|
280
|
-
>
|
|
281
|
-
> 不要在main.ts中全量注册组件,按需注册组件。
|
|
282
|
-
>
|
|
283
|
-
|
|
284
|
-
**当然,我们会把解析器内置到 `csit-vue3`中,开发者无需关心解析器实现,因为解析器实现要遵循一定的组件库设计规则,开发者只需从 `csit-vue3`中导出使用即可。**
|
|
285
|
-
|
|
286
|
-
如果使用`csit-vue3`内置解析器,实战第二步不需要你做,第三步参考如下。
|
|
287
|
-
|
|
288
|
-
```ts
|
|
289
117
|
import { defineConfig } from 'vite'
|
|
290
118
|
import Components from 'unplugin-vue-components/vite'
|
|
291
119
|
|
|
@@ -332,3 +160,12 @@ const fileList = ref<any[]>([
|
|
|
332
160
|
},
|
|
333
161
|
])
|
|
334
162
|
```
|
|
163
|
+
|
|
164
|
+
## `番外:` **常见命名风格比较**
|
|
165
|
+
|
|
166
|
+
| **风格** | **示例** | **常见场景** |
|
|
167
|
+
| ---------- | ------------------ | ---------------------------------------- |
|
|
168
|
+
| camelCase | ciBlueLineTitle | JS 变量、函数名 |
|
|
169
|
+
| PascalCase | CiBlueLineTitle | Vue/React 组件名 |
|
|
170
|
+
| snake_case | ci_blue_line_title | Python变量、文件名、数据库字段 |
|
|
171
|
+
| kebab-case | ci-blue-line-title | 文件/文件夹、HTML/CSS 类名、自定义组件名 |
|