ikun-icon 1.0.0
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 +354 -0
- package/dist/cjs/constant/template.cjs +40 -0
- package/dist/cjs/constant/template.cjs.map +1 -0
- package/dist/cjs/generators/alipay.cjs +60 -0
- package/dist/cjs/generators/alipay.cjs.map +1 -0
- package/dist/cjs/generators/base.cjs +136 -0
- package/dist/cjs/generators/base.cjs.map +1 -0
- package/dist/cjs/generators/index.cjs +19 -0
- package/dist/cjs/generators/index.cjs.map +1 -0
- package/dist/cjs/generators/wechat.cjs +63 -0
- package/dist/cjs/generators/wechat.cjs.map +1 -0
- package/dist/cjs/index.cjs +88 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/templateEngine/EjsTemplate.cjs +52 -0
- package/dist/cjs/templateEngine/EjsTemplate.cjs.map +1 -0
- package/dist/cjs/templateEngine/HandlebarsTemplate.cjs +43 -0
- package/dist/cjs/templateEngine/HandlebarsTemplate.cjs.map +1 -0
- package/dist/cjs/templateEngine/TemplateBase.cjs +70 -0
- package/dist/cjs/templateEngine/TemplateBase.cjs.map +1 -0
- package/dist/cjs/templateEngine/index.cjs +19 -0
- package/dist/cjs/templateEngine/index.cjs.map +1 -0
- package/dist/cjs/templates/alipay/acss.hbs +0 -0
- package/dist/cjs/templates/alipay/axml.hbs +14 -0
- package/dist/cjs/templates/alipay/js.hbs +126 -0
- package/dist/cjs/templates/alipay/json.hbs +3 -0
- package/dist/cjs/templates/wechat/js.ejs +118 -0
- package/dist/cjs/templates/wechat/json.ejs +3 -0
- package/dist/cjs/templates/wechat/wxml.ejs +14 -0
- package/dist/cjs/templates/wechat/wxss.ejs +0 -0
- package/dist/cjs/types/interfaces.cjs +18 -0
- package/dist/cjs/types/interfaces.cjs.map +1 -0
- package/dist/cjs/utils/ConfigLoader.cjs +70 -0
- package/dist/cjs/utils/ConfigLoader.cjs.map +1 -0
- package/dist/cjs/utils/DependencyContainer.cjs +67 -0
- package/dist/cjs/utils/DependencyContainer.cjs.map +1 -0
- package/dist/cjs/utils/ErrorHandler.cjs +70 -0
- package/dist/cjs/utils/ErrorHandler.cjs.map +1 -0
- package/dist/cjs/utils/FileReadResolver.cjs +26 -0
- package/dist/cjs/utils/FileReadResolver.cjs.map +1 -0
- package/dist/cjs/utils/FileWriterResolver.cjs +28 -0
- package/dist/cjs/utils/FileWriterResolver.cjs.map +1 -0
- package/dist/cjs/utils/PathResolver.cjs +29 -0
- package/dist/cjs/utils/PathResolver.cjs.map +1 -0
- package/dist/cjs/utils/TemplateEngineInitializer.cjs +54 -0
- package/dist/cjs/utils/TemplateEngineInitializer.cjs.map +1 -0
- package/dist/constant/template.d.ts +7 -0
- package/dist/esm/constant/template.mjs +37 -0
- package/dist/esm/constant/template.mjs.map +1 -0
- package/dist/esm/generators/alipay.mjs +58 -0
- package/dist/esm/generators/alipay.mjs.map +1 -0
- package/dist/esm/generators/base.mjs +134 -0
- package/dist/esm/generators/base.mjs.map +1 -0
- package/dist/esm/generators/index.mjs +17 -0
- package/dist/esm/generators/index.mjs.map +1 -0
- package/dist/esm/generators/wechat.mjs +61 -0
- package/dist/esm/generators/wechat.mjs.map +1 -0
- package/dist/esm/index.mjs +77 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/templateEngine/EjsTemplate.mjs +50 -0
- package/dist/esm/templateEngine/EjsTemplate.mjs.map +1 -0
- package/dist/esm/templateEngine/HandlebarsTemplate.mjs +41 -0
- package/dist/esm/templateEngine/HandlebarsTemplate.mjs.map +1 -0
- package/dist/esm/templateEngine/TemplateBase.mjs +67 -0
- package/dist/esm/templateEngine/TemplateBase.mjs.map +1 -0
- package/dist/esm/templateEngine/index.mjs +17 -0
- package/dist/esm/templateEngine/index.mjs.map +1 -0
- package/dist/esm/templates/alipay/acss.hbs +0 -0
- package/dist/esm/templates/alipay/axml.hbs +14 -0
- package/dist/esm/templates/alipay/js.hbs +126 -0
- package/dist/esm/templates/alipay/json.hbs +3 -0
- package/dist/esm/templates/wechat/js.ejs +118 -0
- package/dist/esm/templates/wechat/json.ejs +3 -0
- package/dist/esm/templates/wechat/wxml.ejs +14 -0
- package/dist/esm/templates/wechat/wxss.ejs +0 -0
- package/dist/esm/types/interfaces.mjs +18 -0
- package/dist/esm/types/interfaces.mjs.map +1 -0
- package/dist/esm/utils/ConfigLoader.mjs +68 -0
- package/dist/esm/utils/ConfigLoader.mjs.map +1 -0
- package/dist/esm/utils/DependencyContainer.mjs +65 -0
- package/dist/esm/utils/DependencyContainer.mjs.map +1 -0
- package/dist/esm/utils/ErrorHandler.mjs +66 -0
- package/dist/esm/utils/ErrorHandler.mjs.map +1 -0
- package/dist/esm/utils/FileReadResolver.mjs +24 -0
- package/dist/esm/utils/FileReadResolver.mjs.map +1 -0
- package/dist/esm/utils/FileWriterResolver.mjs +26 -0
- package/dist/esm/utils/FileWriterResolver.mjs.map +1 -0
- package/dist/esm/utils/PathResolver.mjs +27 -0
- package/dist/esm/utils/PathResolver.mjs.map +1 -0
- package/dist/esm/utils/TemplateEngineInitializer.mjs +52 -0
- package/dist/esm/utils/TemplateEngineInitializer.mjs.map +1 -0
- package/dist/generators/alipay.d.ts +9 -0
- package/dist/generators/base.d.ts +87 -0
- package/dist/generators/index.d.ts +4 -0
- package/dist/generators/wechat.d.ts +12 -0
- package/dist/index.d.ts +4 -0
- package/dist/templateEngine/EjsTemplate.d.ts +26 -0
- package/dist/templateEngine/HandlebarsTemplate.d.ts +25 -0
- package/dist/templateEngine/TemplateBase.d.ts +43 -0
- package/dist/templateEngine/index.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interfaces.d.ts +203 -0
- package/dist/utils/ConfigLoader.d.ts +12 -0
- package/dist/utils/DependencyContainer.d.ts +17 -0
- package/dist/utils/ErrorHandler.d.ts +31 -0
- package/dist/utils/FileReadResolver.d.ts +17 -0
- package/dist/utils/FileWriterResolver.d.ts +8 -0
- package/dist/utils/PathResolver.d.ts +7 -0
- package/dist/utils/TemplateEngineInitializer.d.ts +13 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# ikun-icon
|
|
2
|
+
|
|
3
|
+
一个强大的小程序图标组件生成工具,支持微信小程序和支付宝小程序,帮助开发者快速生成可复用的图标组件。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- 📦 支持微信小程序和支付宝小程序
|
|
8
|
+
- 🎨 自定义组件名称、前缀和样式
|
|
9
|
+
- 📋 基于模板引擎生成标准化组件
|
|
10
|
+
- ⚙️ 灵活的配置选项
|
|
11
|
+
- 🚀 快速集成,提高开发效率
|
|
12
|
+
- 📁 完善的错误处理机制
|
|
13
|
+
- 💡 支持高级配置和扩展
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
### 生产环境安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install ikun-icon --save-dev
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 本地开发安装
|
|
24
|
+
|
|
25
|
+
如果您需要在本地开发和测试 `ikun-icon` 包,可以使用 `npm link` 进行安装:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 在 ikun-icon 项目目录中
|
|
29
|
+
npm link
|
|
30
|
+
|
|
31
|
+
# 在目标项目目录中
|
|
32
|
+
npm link ikun-icon
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
这样可以将本地的 `ikun-icon` 包链接到目标项目中,便于您在开发过程中实时测试修改。
|
|
36
|
+
|
|
37
|
+
## 使用方法
|
|
38
|
+
|
|
39
|
+
### 1. 创建配置文件
|
|
40
|
+
|
|
41
|
+
在项目根目录创建 `iconfont.json` 配置文件:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"generatorConfig": {
|
|
46
|
+
"componentOutputDir": "./iconfont",
|
|
47
|
+
"iconfontCssOutputDir": "./styles",
|
|
48
|
+
"iconfontCssUrl": "https://at.alicdn.com/t/font_xxxxxxxx_xxxxxx.css",
|
|
49
|
+
"customTemplateDir": false
|
|
50
|
+
},
|
|
51
|
+
"componentConfig": {
|
|
52
|
+
"componentName": "icon",
|
|
53
|
+
"componentPrefix": "wx",
|
|
54
|
+
"defaultWidth": 48,
|
|
55
|
+
"defaultHeight": 48,
|
|
56
|
+
"defaultColor": "#333333"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. 生成图标组件
|
|
62
|
+
|
|
63
|
+
#### 使用 CLI
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx ikun-icon <platform> -c <config-path>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
参数说明:
|
|
70
|
+
- `platform`: 小程序平台,必填值为 `wechat` 或 `alipay`
|
|
71
|
+
- `-c, --config <path>`: 配置文件路径,可选参数,默认为 `./iconfont.json`
|
|
72
|
+
|
|
73
|
+
示例:
|
|
74
|
+
```bash
|
|
75
|
+
# 使用默认配置文件路径
|
|
76
|
+
npx ikun-icon wechat
|
|
77
|
+
|
|
78
|
+
# 使用指定配置文件路径
|
|
79
|
+
npx ikun-icon alipay -c ./my-config.json
|
|
80
|
+
|
|
81
|
+
# 使用完整选项名称
|
|
82
|
+
npx ikun-icon wechat --config ./iconfont-custom.json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
查看帮助:
|
|
86
|
+
```bash
|
|
87
|
+
npx ikun-icon --help
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### 在代码中使用
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { main, MiniProgramPlatform } from 'ikun-icon';
|
|
94
|
+
|
|
95
|
+
async function generateIcons() {
|
|
96
|
+
await main(MiniProgramPlatform.WECHAT, './iconfont.json');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
generateIcons();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 配置选项
|
|
103
|
+
|
|
104
|
+
### generatorConfig
|
|
105
|
+
|
|
106
|
+
| 配置项 | 类型 | 描述 | 默认值 |
|
|
107
|
+
| --- | --- | --- | --- |
|
|
108
|
+
| `componentOutputDir` | `string` | 组件输出目录 | 必填 |
|
|
109
|
+
| `customTemplateDir` | `string | false` | 自定义模板目录 | 可选 |
|
|
110
|
+
| `iconfontCssOutputDir` | `string` | 图标字体 CSS 输出目录 | 必填 |
|
|
111
|
+
| `iconfontCssUrl` | `string` | 图标字体 CSS URL | 必填 |
|
|
112
|
+
|
|
113
|
+
### componentConfig
|
|
114
|
+
|
|
115
|
+
| 配置项 | 类型 | 描述 | 默认值 |
|
|
116
|
+
| --- | --- | --- | --- |
|
|
117
|
+
| `componentName` | `string` | 组件名称 | 必填 |
|
|
118
|
+
| `componentPrefix` | `string` | 组件前缀 | `ikun` |
|
|
119
|
+
| `usingComponents` | `Record<string, string>` | 组件使用的其他组件 | `{}` |
|
|
120
|
+
| `styleIsolation` | `'isolated' | 'apply-shared' | 'shared'` | 组件样式隔离 | `shared` |
|
|
121
|
+
| `virtualHost` | `boolean` | 是否虚拟化组件 | `false` |
|
|
122
|
+
| `defaultWidth` | `number` | 容器宽度 | `48` |
|
|
123
|
+
| `defaultHeight` | `number` | 容器高度 | `48` |
|
|
124
|
+
| `defaultFontSize` | `number` | 默认图标字体大小 | `60` |
|
|
125
|
+
| `defaultColor` | `string` | 默认图标颜色 | `#000000` |
|
|
126
|
+
| `defaultUnit` | `string` | 默认单位 | `rpx` |
|
|
127
|
+
| `defaultIconFontClass` | `string` | 图标字体类名 | `iconfont` |
|
|
128
|
+
| `customTemplateData` | `TemplateData` | 自定义模板数据 | `{}` |
|
|
129
|
+
|
|
130
|
+
## 生成的组件结构
|
|
131
|
+
|
|
132
|
+
### 微信小程序
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
├── icon/
|
|
136
|
+
│ ├── icon.js
|
|
137
|
+
│ ├── icon.json
|
|
138
|
+
│ ├── icon.wxml
|
|
139
|
+
│ └── icon.wxss
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 支付宝小程序
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
├── icon/
|
|
146
|
+
│ ├── icon.js
|
|
147
|
+
│ ├── icon.json
|
|
148
|
+
│ ├── icon.axml
|
|
149
|
+
│ └── icon.acss
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 组件使用示例
|
|
153
|
+
|
|
154
|
+
### 微信小程序
|
|
155
|
+
|
|
156
|
+
```wxml
|
|
157
|
+
<wx-icon name="icon-name" size="48" color="#333" />
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 支付宝小程序
|
|
161
|
+
|
|
162
|
+
```axml
|
|
163
|
+
<icon name="icon-name" size="48" color="#333" />
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## API 文档
|
|
167
|
+
|
|
168
|
+
### main(platform: MiniProgramPlatform, iconfontConfigPath: string)
|
|
169
|
+
|
|
170
|
+
生成图标组件的主函数。
|
|
171
|
+
|
|
172
|
+
参数:
|
|
173
|
+
- `platform`: 小程序平台枚举值(`MiniProgramPlatform.WECHAT` 或 `MiniProgramPlatform.ALIPAY`)
|
|
174
|
+
- `iconfontConfigPath`: 配置文件路径
|
|
175
|
+
|
|
176
|
+
返回值:
|
|
177
|
+
- `Promise<void>`
|
|
178
|
+
|
|
179
|
+
### 高级 API 使用示例
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
import { DependencyContainer, MiniProgramPlatform, ErrorCode, createError } from 'ikun-icon';
|
|
183
|
+
|
|
184
|
+
async function generateIconsAdvanced() {
|
|
185
|
+
// 创建依赖注入容器
|
|
186
|
+
const container = new DependencyContainer();
|
|
187
|
+
|
|
188
|
+
try {
|
|
189
|
+
// 加载配置
|
|
190
|
+
const config = await container.loadConfig('./iconfont.json');
|
|
191
|
+
|
|
192
|
+
// 获取生成器
|
|
193
|
+
const generator = await container.getGenerator(MiniProgramPlatform.ALIPAY, config);
|
|
194
|
+
|
|
195
|
+
// 生成图标组件
|
|
196
|
+
await generator.generateIcon({
|
|
197
|
+
componentName: 'icon',
|
|
198
|
+
defaultWidth: 64,
|
|
199
|
+
defaultHeight: 64,
|
|
200
|
+
defaultColor: '#666'
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// 生成 iconfont.css
|
|
204
|
+
await generator.generateIconfontCss(config.generatorConfig);
|
|
205
|
+
|
|
206
|
+
console.log('图标组件生成成功!');
|
|
207
|
+
} catch (error) {
|
|
208
|
+
if (error instanceof Error && 'code' in error) {
|
|
209
|
+
const customError = error as any;
|
|
210
|
+
console.error(`错误代码: ${customError.code}`);
|
|
211
|
+
console.error(`错误信息: ${customError.message}`);
|
|
212
|
+
if (customError.details) {
|
|
213
|
+
console.error(`错误详情: ${JSON.stringify(customError.details)}`);
|
|
214
|
+
}
|
|
215
|
+
} else {
|
|
216
|
+
console.error('生成失败:', error);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// 自定义错误处理示例
|
|
222
|
+
function handleError(error: Error) {
|
|
223
|
+
if (error instanceof Error && 'code' in error) {
|
|
224
|
+
const customError = error as any;
|
|
225
|
+
switch (customError.code) {
|
|
226
|
+
case ErrorCode.CONFIG_PATH_REQUIRED:
|
|
227
|
+
console.error('请提供配置文件路径');
|
|
228
|
+
break;
|
|
229
|
+
case ErrorCode.CONFIG_FILE_NOT_FOUND:
|
|
230
|
+
console.error('配置文件未找到');
|
|
231
|
+
break;
|
|
232
|
+
case ErrorCode.GENERATOR_CREATE_FAILED:
|
|
233
|
+
console.error('生成器创建失败');
|
|
234
|
+
break;
|
|
235
|
+
default:
|
|
236
|
+
console.error('未知错误:', customError.message);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
generateIconsAdvanced().catch(handleError);
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 错误处理
|
|
245
|
+
|
|
246
|
+
`ikun-icon` 提供了完善的错误处理机制,使用自定义错误类 `CustomError` 和错误代码 `ErrorCode` 来提供清晰的错误信息。
|
|
247
|
+
|
|
248
|
+
### 错误代码列表
|
|
249
|
+
|
|
250
|
+
| 错误代码 | 说明 |
|
|
251
|
+
| --- | --- |
|
|
252
|
+
| `CONFIG_PATH_REQUIRED` | 配置文件路径不能为空 |
|
|
253
|
+
| `CONFIG_FILE_NOT_FOUND` | 配置文件不存在 |
|
|
254
|
+
| `CONFIG_PARSE_ERROR` | 配置文件解析错误 |
|
|
255
|
+
| `CONFIG_INVALID` | 配置文件格式无效 |
|
|
256
|
+
| `TEMPLATE_ENGINE_NOT_SUPPORTED` | 不支持的模板引擎类型 |
|
|
257
|
+
| `TEMPLATE_FILE_NOT_FOUND` | 模板文件不存在 |
|
|
258
|
+
| `TEMPLATE_RENDER_ERROR` | 模板渲染错误 |
|
|
259
|
+
| `GENERATOR_PLATFORM_NOT_SUPPORTED` | 不支持的小程序平台 |
|
|
260
|
+
| `GENERATOR_OUTPUT_DIR_ERROR` | 生成器输出目录错误 |
|
|
261
|
+
| `GENERATOR_ICONFONT_CSS_OUTPUT_DIR_ERROR` | 生成器iconfont.css输出目录错误 |
|
|
262
|
+
| `GENERATOR_ICONFONT_CSS_URL_ERROR` | 生成器iconfont.css在线地址错误 |
|
|
263
|
+
| `FILE_READ_ERROR` | 文件读取错误 |
|
|
264
|
+
| `FILE_WRITE_ERROR` | 文件写入错误 |
|
|
265
|
+
| `UNKNOWN_ERROR` | 未知错误 |
|
|
266
|
+
|
|
267
|
+
### 错误处理最佳实践
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
import { ErrorCode } from 'ikun-icon';
|
|
271
|
+
|
|
272
|
+
try {
|
|
273
|
+
// 生成图标组件
|
|
274
|
+
await main(MiniProgramPlatform.WECHAT, './iconfont.json');
|
|
275
|
+
} catch (error) {
|
|
276
|
+
if (error instanceof Error) {
|
|
277
|
+
const customError = error as any;
|
|
278
|
+
|
|
279
|
+
// 检查是否为自定义错误
|
|
280
|
+
if (customError.code && Object.values(ErrorCode).includes(customError.code)) {
|
|
281
|
+
console.error(`错误: ${customError.message}`);
|
|
282
|
+
|
|
283
|
+
// 根据错误代码执行不同的处理逻辑
|
|
284
|
+
switch (customError.code) {
|
|
285
|
+
case ErrorCode.CONFIG_FILE_NOT_FOUND:
|
|
286
|
+
console.error('请确保配置文件存在并路径正确');
|
|
287
|
+
break;
|
|
288
|
+
case ErrorCode.GENERATOR_PLATFORM_NOT_SUPPORTED:
|
|
289
|
+
console.error('请选择支持的平台: wechat 或 alipay');
|
|
290
|
+
break;
|
|
291
|
+
case ErrorCode.TEMPLATE_FILE_NOT_FOUND:
|
|
292
|
+
console.error('模板文件缺失,请重新安装依赖');
|
|
293
|
+
break;
|
|
294
|
+
default:
|
|
295
|
+
console.error('请检查配置和环境并重试');
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// 记录错误详情(如果有)
|
|
299
|
+
if (customError.details) {
|
|
300
|
+
console.error('详情:', customError.details);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// 记录原始错误(如果有)
|
|
304
|
+
if (customError.originalError) {
|
|
305
|
+
console.error('原始错误:', customError.originalError);
|
|
306
|
+
}
|
|
307
|
+
} else {
|
|
308
|
+
// 处理普通错误
|
|
309
|
+
console.error('生成失败:', error.message);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## 开发
|
|
316
|
+
|
|
317
|
+
### 安装依赖
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
npm install
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 构建项目
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
npm run build
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### 开发模式
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
npm run dev
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 类型检查
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
npm run typecheck
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### 代码格式化
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
npm run format
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## 支持的平台
|
|
348
|
+
|
|
349
|
+
- ✅ 微信小程序
|
|
350
|
+
- ✅ 支付宝小程序
|
|
351
|
+
|
|
352
|
+
## License
|
|
353
|
+
|
|
354
|
+
ISC
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var interfaces = require('../types/interfaces.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 小程序平台类型对应的模板后缀名
|
|
7
|
+
* 包含组件文件后缀名、js文件后缀名、json文件后缀名、样式文件后缀名
|
|
8
|
+
*/
|
|
9
|
+
const MINI_PROGRAM_PLATFORM_TEMPLATE_SUFFIX = {
|
|
10
|
+
[interfaces.MiniProgramPlatform.WECHAT]: {
|
|
11
|
+
component: 'wxml',
|
|
12
|
+
js: 'js',
|
|
13
|
+
json: 'json',
|
|
14
|
+
style: 'wxss',
|
|
15
|
+
},
|
|
16
|
+
[interfaces.MiniProgramPlatform.ALIPAY]: {
|
|
17
|
+
component: 'axml',
|
|
18
|
+
js: 'js',
|
|
19
|
+
json: 'json',
|
|
20
|
+
style: 'acss',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
// 图标默认参数
|
|
24
|
+
const iconDefaultParams = {
|
|
25
|
+
componentName: 'icon',
|
|
26
|
+
componentPrefix: 'ikun',
|
|
27
|
+
virtualHost: false,
|
|
28
|
+
styleIsolation: 'shared',
|
|
29
|
+
usingComponents: {},
|
|
30
|
+
defaultWidth: 48,
|
|
31
|
+
defaultHeight: 48,
|
|
32
|
+
defaultFontSize: 60,
|
|
33
|
+
defaultUnit: 'rpx',
|
|
34
|
+
defaultColor: '#000000',
|
|
35
|
+
defaultIconFontClass: 'iconfont',
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.MINI_PROGRAM_PLATFORM_TEMPLATE_SUFFIX = MINI_PROGRAM_PLATFORM_TEMPLATE_SUFFIX;
|
|
39
|
+
exports.iconDefaultParams = iconDefaultParams;
|
|
40
|
+
//# sourceMappingURL=template.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.cjs","sources":["../../../src/constant/template.ts"],"sourcesContent":[null],"names":["MiniProgramPlatform"],"mappings":";;;;AAEA;;;AAGG;AACI,MAAM,qCAAqC,GAG9C;AACF,IAAA,CAACA,8BAAmB,CAAC,MAAM,GAAG;AAC5B,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA,CAACA,8BAAmB,CAAC,MAAM,GAAG;AAC5B,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;;AAGH;AACO,MAAM,iBAAiB,GAAoB;AAChD,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,oBAAoB,EAAE,UAAU;;;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base = require('./base.cjs');
|
|
4
|
+
|
|
5
|
+
class AlipayGenerator extends base.BaseGenerator {
|
|
6
|
+
constructor(platform, templateEngine, defaultConfig) {
|
|
7
|
+
super(platform, templateEngine, defaultConfig);
|
|
8
|
+
}
|
|
9
|
+
async getComponentContent(componentConfig) {
|
|
10
|
+
// 获取模板文件地址
|
|
11
|
+
// TODO 获取模板文件路径的方法,或许应该放在模板类里面
|
|
12
|
+
const componentTemplateName = this.templateEngine.getTemplateSuffix(this.platform)['component'];
|
|
13
|
+
// 获取模板文件路径
|
|
14
|
+
const componentTemplatePath = this.templateEngine.getTemplateFile(this.platform, componentTemplateName);
|
|
15
|
+
// 获取模板内容
|
|
16
|
+
const componentTemplate = await this.templateEngine.getTemplateContent(componentTemplatePath);
|
|
17
|
+
// 渲染模板
|
|
18
|
+
const componentContent = this.templateEngine.render(componentTemplate, componentConfig);
|
|
19
|
+
return componentContent;
|
|
20
|
+
}
|
|
21
|
+
async getJsContent(componentConfig) {
|
|
22
|
+
// 获取模板文件地址
|
|
23
|
+
// 根据platform获取默认模板名称,默认模板名称和生成的platform组件后缀名相同
|
|
24
|
+
const componentTemplateName = this.templateEngine.getTemplateSuffix(this.platform)['js'];
|
|
25
|
+
// 获取模板文件路径
|
|
26
|
+
const jsTemplatePath = this.templateEngine.getTemplateFile(this.platform, componentTemplateName);
|
|
27
|
+
// // 获取模板内容
|
|
28
|
+
const jsTemplate = await this.templateEngine.getTemplateContent(jsTemplatePath);
|
|
29
|
+
// // 渲染模板
|
|
30
|
+
const jsContent = this.templateEngine.render(jsTemplate, componentConfig);
|
|
31
|
+
return jsContent;
|
|
32
|
+
}
|
|
33
|
+
async getJsonContent(componentConfig) {
|
|
34
|
+
// 获取模板文件地址
|
|
35
|
+
// TODO 获取模板文件路径的方法,或许应该放在模板类里面
|
|
36
|
+
const componentTemplateName = this.templateEngine.getTemplateSuffix(this.platform)['json'];
|
|
37
|
+
// 获取模板文件路径
|
|
38
|
+
const jsonTemplatePath = this.templateEngine.getTemplateFile(this.platform, componentTemplateName);
|
|
39
|
+
// 获取模板内容
|
|
40
|
+
const jsonTemplate = await this.templateEngine.getTemplateContent(jsonTemplatePath);
|
|
41
|
+
// 渲染模板
|
|
42
|
+
const jsonContent = this.templateEngine.render(jsonTemplate, componentConfig);
|
|
43
|
+
return jsonContent;
|
|
44
|
+
}
|
|
45
|
+
async getStyleContent(componentConfig) {
|
|
46
|
+
// 获取模板文件地址
|
|
47
|
+
// TODO 获取模板文件路径的方法,或许应该放在模板类里面
|
|
48
|
+
const componentTemplateName = this.templateEngine.getTemplateSuffix(this.platform)['style'];
|
|
49
|
+
// 获取模板文件路径
|
|
50
|
+
const styleTemplatePath = this.templateEngine.getTemplateFile(this.platform, componentTemplateName);
|
|
51
|
+
// 获取模板内容
|
|
52
|
+
const styleTemplate = await this.templateEngine.getTemplateContent(styleTemplatePath);
|
|
53
|
+
// 渲染模板
|
|
54
|
+
const styleContent = this.templateEngine.render(styleTemplate, componentConfig);
|
|
55
|
+
return styleContent;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
exports.AlipayGenerator = AlipayGenerator;
|
|
60
|
+
//# sourceMappingURL=alipay.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alipay.cjs","sources":["../../../src/generators/alipay.ts"],"sourcesContent":[null],"names":["BaseGenerator"],"mappings":";;;;AAQM,MAAO,eAAgB,SAAQA,kBAAa,CAAA;AAChD,IAAA,WAAA,CACE,QAA6B,EAC7B,cAA8B,EAC9B,aAAuC,EAAA;AAEvC,QAAA,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC;IAChD;IACU,MAAM,mBAAmB,CAAC,eAAgC,EAAA;;;AAGlE,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;;AAE/F,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;QAEvG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;;AAE7F,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;AACvF,QAAA,OAAO,gBAAgB;IACzB;IACU,MAAM,YAAY,CAAC,eAAgC,EAAA;;;AAG3D,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;;AAExF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;QAEhG,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC;;AAE/E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;AACzE,QAAA,OAAO,SAAS;IAClB;IACU,MAAM,cAAc,CAAC,eAAgC,EAAA;;;AAG7D,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;;AAE1F,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;QAElG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;;AAEnF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC;AAC7E,QAAA,OAAO,WAAW;IACpB;IACU,MAAM,eAAe,CAAC,eAAgC,EAAA;;;AAG9D,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;;AAE3F,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;;QAEnG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;;AAErF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AAC/E,QAAA,OAAO,YAAY;IACrB;AACD;;;;"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var FileWriterResolver = require('../utils/FileWriterResolver.cjs');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
|
|
6
|
+
class BaseGenerator {
|
|
7
|
+
platform;
|
|
8
|
+
defaultConfig;
|
|
9
|
+
templateEngine;
|
|
10
|
+
constructor(platform, templateEngine, defaultConfig) {
|
|
11
|
+
this.platform = platform;
|
|
12
|
+
this.templateEngine = templateEngine;
|
|
13
|
+
this.defaultConfig = {
|
|
14
|
+
componentOutputDir: './icon',
|
|
15
|
+
customTemplateDir: false,
|
|
16
|
+
...defaultConfig,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 生成阿里iconfont.css文件
|
|
21
|
+
* @param generatorConfig 生成器配置
|
|
22
|
+
*/
|
|
23
|
+
async generateIconfontCss(generatorConfig) {
|
|
24
|
+
const { iconfontCssUrl, iconfontCssOutputDir } = generatorConfig;
|
|
25
|
+
// 获取网络地址文件内容
|
|
26
|
+
let Url = iconfontCssUrl;
|
|
27
|
+
if (!iconfontCssUrl.startsWith('http')) {
|
|
28
|
+
Url = 'https://' + iconfontCssUrl;
|
|
29
|
+
}
|
|
30
|
+
const response = await fetch(Url);
|
|
31
|
+
const iconfontCssContent = await response.text();
|
|
32
|
+
FileWriterResolver.writeFileSync(path.join(iconfontCssOutputDir, 'iconfont.css'), iconfontCssContent);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 获取输出目录路径
|
|
36
|
+
* @returns 输出目录路径
|
|
37
|
+
*/
|
|
38
|
+
get componentOutputDir() {
|
|
39
|
+
const componentOutputDir = this.defaultConfig.componentOutputDir;
|
|
40
|
+
if (path.isAbsolute(componentOutputDir)) {
|
|
41
|
+
return componentOutputDir;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return path.join(process.cwd(), componentOutputDir);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 获取输出文件路径
|
|
49
|
+
* @param filename 输出文件名
|
|
50
|
+
* @returns 输出文件路径
|
|
51
|
+
*/
|
|
52
|
+
getOutputFile(filename) {
|
|
53
|
+
return path.join(this.componentOutputDir, filename);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 生成图标代码
|
|
57
|
+
* @param componentConfig 组件配置
|
|
58
|
+
*/
|
|
59
|
+
generateIcon(componentConfig) {
|
|
60
|
+
this.beforeGenerate(componentConfig);
|
|
61
|
+
this.generateComponentFile(componentConfig);
|
|
62
|
+
this.generateJsFile(componentConfig);
|
|
63
|
+
this.generateJsonFile(componentConfig);
|
|
64
|
+
this.generateStyleFile(componentConfig);
|
|
65
|
+
this.afterGenerate(componentConfig);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 根据文件类型获取对应的内容
|
|
69
|
+
*/
|
|
70
|
+
async getContentByType(componentConfig, fileType) {
|
|
71
|
+
switch (fileType) {
|
|
72
|
+
case 'component':
|
|
73
|
+
return await this.getComponentContent(componentConfig);
|
|
74
|
+
case 'js':
|
|
75
|
+
return await this.getJsContent(componentConfig);
|
|
76
|
+
case 'json':
|
|
77
|
+
return await this.getJsonContent(componentConfig);
|
|
78
|
+
case 'style':
|
|
79
|
+
return await this.getStyleContent(componentConfig);
|
|
80
|
+
default:
|
|
81
|
+
throw new Error(`不支持的模板类型: ${fileType}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async generateFile(componentConfig, fileType) {
|
|
85
|
+
let content = await this.getContentByType(componentConfig, fileType);
|
|
86
|
+
const suffix = this.templateEngine.getTemplateSuffix(this.platform)[fileType];
|
|
87
|
+
const fileName = `${componentConfig.componentPrefix ? componentConfig.componentPrefix + '-' : ''}${componentConfig.componentName}.${suffix}`;
|
|
88
|
+
const outputFile = this.getOutputFile(fileName);
|
|
89
|
+
content = this.beforeWrite(componentConfig, fileType, outputFile, content);
|
|
90
|
+
FileWriterResolver.writeFileSync(outputFile, content);
|
|
91
|
+
this.afterWrite(componentConfig, fileType, outputFile);
|
|
92
|
+
}
|
|
93
|
+
generateComponentFile(componentConfig) {
|
|
94
|
+
this.generateFile(componentConfig, 'component');
|
|
95
|
+
}
|
|
96
|
+
generateJsFile(componentConfig) {
|
|
97
|
+
this.generateFile(componentConfig, 'js');
|
|
98
|
+
}
|
|
99
|
+
generateJsonFile(componentConfig) {
|
|
100
|
+
this.generateFile(componentConfig, 'json');
|
|
101
|
+
}
|
|
102
|
+
generateStyleFile(componentConfig) {
|
|
103
|
+
this.generateFile(componentConfig, 'style');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 在生成图标之前调用(可用于初始化操作)
|
|
107
|
+
* @param componentConfig 组件配置
|
|
108
|
+
*/
|
|
109
|
+
beforeGenerate(_componentConfig) { }
|
|
110
|
+
/**
|
|
111
|
+
* 在生成图标之后调用(可用于清理操作)
|
|
112
|
+
* @param componentConfig 组件配置
|
|
113
|
+
*/
|
|
114
|
+
afterGenerate(_componentConfig) { }
|
|
115
|
+
/**
|
|
116
|
+
* 在写入文件内容之前调用(可用于修改内容)
|
|
117
|
+
* @param componentConfig 组件配置
|
|
118
|
+
* @param fileType 文件类型
|
|
119
|
+
* @param filePath 文件路径
|
|
120
|
+
* @param content 文件内容
|
|
121
|
+
* @returns 修改后的文件内容
|
|
122
|
+
*/
|
|
123
|
+
beforeWrite(_componentConfig, _fileType, _filePath, content) {
|
|
124
|
+
return content;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 在写入文件内容之后调用(可用于执行额外操作)
|
|
128
|
+
* @param componentConfig 组件配置
|
|
129
|
+
* @param fileType 文件类型
|
|
130
|
+
* @param filePath 文件路径
|
|
131
|
+
*/
|
|
132
|
+
afterWrite(_componentConfig, _fileType, _filePath) { }
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
exports.BaseGenerator = BaseGenerator;
|
|
136
|
+
//# sourceMappingURL=base.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.cjs","sources":["../../../src/generators/base.ts"],"sourcesContent":[null],"names":["fileWriterResolver","join","isAbsolute"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var interfaces = require('../types/interfaces.cjs');
|
|
4
|
+
var wechat = require('./wechat.cjs');
|
|
5
|
+
var alipay = require('./alipay.cjs');
|
|
6
|
+
|
|
7
|
+
function createGenerator(platform, templateEngine, defaultConfig = {}) {
|
|
8
|
+
switch (platform) {
|
|
9
|
+
case interfaces.MiniProgramPlatform.WECHAT:
|
|
10
|
+
return new wechat.WechatGenerator(platform, templateEngine, defaultConfig);
|
|
11
|
+
case interfaces.MiniProgramPlatform.ALIPAY:
|
|
12
|
+
return new alipay.AlipayGenerator(platform, templateEngine, defaultConfig);
|
|
13
|
+
default:
|
|
14
|
+
throw new Error(`暂不支持的平台: ${platform}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.createGenerator = createGenerator;
|
|
19
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/generators/index.ts"],"sourcesContent":[null],"names":["MiniProgramPlatform","WechatGenerator","AlipayGenerator"],"mappings":";;;;;;AAKM,SAAU,eAAe,CAC7B,QAA6B,EAC7B,cAA8B,EAC9B,gBAA0C,EAAE,EAAA;IAE5C,QAAQ,QAAQ;QACd,KAAKA,8BAAmB,CAAC,MAAM;YAC7B,OAAO,IAAIC,sBAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC;QACrE,KAAKD,8BAAmB,CAAC,MAAM;YAC7B,OAAO,IAAIE,sBAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC;AACrE,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAA,CAAE,CAAC;;AAE7C;;;;"}
|