anl 1.5.7 → 1.5.9
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.ar.md +211 -1
- package/README.en.md +150 -1
- package/README.es.md +210 -1
- package/README.fr.md +207 -1
- package/README.jp.md +211 -1
- package/README.ru.md +208 -1
- package/lib/package.json.js +1 -1
- package/package.json +1 -1
package/README.ar.md
CHANGED
|
@@ -17,4 +17,214 @@
|
|
|
17
17
|
- ⚡️ دعم رفع الملفات
|
|
18
18
|
- 🛠 خيارات قابلة للتكوين لإنشاء الكود
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## التثبيت
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ npm install anl -g
|
|
24
|
+
|
|
25
|
+
$ yarn global add anl
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## طريقة الاستخدام
|
|
29
|
+
|
|
30
|
+
1. تنفيذ الأمر
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ anl type
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. إكمال إعدادات المشروع
|
|
37
|
+
|
|
38
|
+
- عند تنفيذ `anl type` لأول مرة، سيتم إنشاء ملف التكوين `an.config.json` تلقائياً في جذر المشروع (يمكن إنشاؤه يدوياً أيضاً)
|
|
39
|
+
- راجع وصف الإعدادات للحصول على تفاصيل المعلمات
|
|
40
|
+
- لا يمكن تغيير اسم ملف التكوين
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"saveTypeFolderPath": "apps/types",
|
|
45
|
+
"saveApiListFolderPath": "apps/api/",
|
|
46
|
+
"saveEnumFolderPath": "apps/enums",
|
|
47
|
+
"importEnumPath": "../../enums",
|
|
48
|
+
"swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
|
|
49
|
+
"requestMethodsImportPath": "./fetch",
|
|
50
|
+
"dataLevel": "serve",
|
|
51
|
+
"formatting": {
|
|
52
|
+
"indentation": "\t",
|
|
53
|
+
"lineEnding": "\n"
|
|
54
|
+
},
|
|
55
|
+
"headers": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. إنشاء تعريفات أنواع TypeScript ودوال طلبات API، قم بتنفيذ الأمر مرة أخرى
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ anl type
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## وصف الإعدادات
|
|
66
|
+
|
|
67
|
+
| الإعداد | النوع | إلزامي | الوصف |
|
|
68
|
+
| ------------------------ | ---------------------------- | ------ | ------------------------------- |
|
|
69
|
+
| saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
|
|
70
|
+
| saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال API |
|
|
71
|
+
| saveEnumFolderPath | string | نعم | مسار حفظ ملفات الأنواع المعدودة |
|
|
72
|
+
| importEnumPath | string | نعم | مسار استيراد الأنواع المعدودة |
|
|
73
|
+
| swaggerJsonUrl | string | نعم | عنوان وثيقة Swagger JSON |
|
|
74
|
+
| requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
|
|
75
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات الاستجابة |
|
|
76
|
+
| formatting | object | لا | إعدادات تنسيق الكود |
|
|
77
|
+
| headers | object | لا | إعدادات رؤوس الطلب |
|
|
78
|
+
|
|
79
|
+
## هيكل الملفات المنشأة
|
|
80
|
+
|
|
81
|
+
- يتم إنشاء هيكل الملفات هذا وفقاً لملف التكوين
|
|
82
|
+
|
|
83
|
+
project/
|
|
84
|
+
├── apps/
|
|
85
|
+
│ ├── types/
|
|
86
|
+
│ │ ├── models/ # جميع ملفات تعريف الأنواع (باستثناء الأنواع المعدودة)
|
|
87
|
+
│ │ ├── connectors/ # تعريفات أنواع API (ملفات تعريف الواجهة)
|
|
88
|
+
│ │ └── enums/ # تعريفات الأنواع المعدودة
|
|
89
|
+
│ └── api/
|
|
90
|
+
│ ├── fetch.ts # تنفيذ طرق الطلب
|
|
91
|
+
│ └── index.ts # دوال طلبات API
|
|
92
|
+
|
|
93
|
+
## أمثلة على الكود المنشأ
|
|
94
|
+
|
|
95
|
+
### ملف تعريف الأنواع
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
declare namespace UserDetail_GET {
|
|
99
|
+
interface Query {
|
|
100
|
+
userId: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface Response {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
age: number;
|
|
107
|
+
role: UserRole;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### دالة طلب API
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { GET } from './fetch';
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* الحصول على تفاصيل المستخدم
|
|
119
|
+
*/
|
|
120
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## وصف الميزات
|
|
124
|
+
|
|
125
|
+
### تحليل الأنواع
|
|
126
|
+
|
|
127
|
+
- دعم جميع أنواع البيانات في مواصفات OpenAPI 3.0
|
|
128
|
+
- معالجة تلقائية للأنواع المتداخلة المعقدة
|
|
129
|
+
- دعم المصفوفات والكائنات والأنواع المعدودة
|
|
130
|
+
- إنشاء تلقائي لتعليقات الواجهة
|
|
131
|
+
|
|
132
|
+
### رفع الملفات
|
|
133
|
+
|
|
134
|
+
عند اكتشاف نوع رفع الملفات، سيتم إضافة رؤوس الطلب المناسبة تلقائياً:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
138
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
139
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### معالجة الأخطاء
|
|
144
|
+
|
|
145
|
+
تتضمن الأداة آلية شاملة لمعالجة الأخطاء:
|
|
146
|
+
|
|
147
|
+
- تنبيهات أخطاء التحليل
|
|
148
|
+
- تحذيرات فشل إنشاء الأنواع
|
|
149
|
+
- معالجة استثناءات كتابة الملفات
|
|
150
|
+
|
|
151
|
+
## التطوير
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# تثبيت التبعيات
|
|
155
|
+
npm install
|
|
156
|
+
|
|
157
|
+
# وضع التطوير
|
|
158
|
+
اضغط F5 للتصحيح
|
|
159
|
+
|
|
160
|
+
# البناء
|
|
161
|
+
npm run build
|
|
162
|
+
|
|
163
|
+
# الربط المحلي للتصحيح
|
|
164
|
+
npm run blink
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## ملاحظات هامة
|
|
168
|
+
|
|
169
|
+
1. تأكد من إمكانية الوصول إلى عنوان وثيقة Swagger JSON
|
|
170
|
+
2. يجب أن تكون المسارات في ملف التكوين نسبية لجذر المشروع
|
|
171
|
+
3. سيتم استبدال الملفات الموجودة بنفس الاسم
|
|
172
|
+
4. يُنصح بإضافة الملفات المنشأة إلى نظام التحكم في الإصدار
|
|
173
|
+
|
|
174
|
+
## الأسئلة الشائعة
|
|
175
|
+
|
|
176
|
+
1. فشل تنسيق ملفات الأنواع المنشأة
|
|
177
|
+
|
|
178
|
+
- تحقق من تثبيت prettier
|
|
179
|
+
- تأكد من وجود ملف تكوين prettier في جذر المشروع
|
|
180
|
+
|
|
181
|
+
2. خطأ في مسار استيراد دوال الطلب
|
|
182
|
+
- تحقق من صحة إعداد requestMethodsImportPath
|
|
183
|
+
- تأكد من وجود ملف طرق الطلب
|
|
184
|
+
|
|
185
|
+
## دليل المساهمة
|
|
186
|
+
|
|
187
|
+
نرحب بتقديم المشكلات وطلبات السحب!
|
|
188
|
+
|
|
189
|
+
## الترخيص
|
|
190
|
+
|
|
191
|
+
ISC License
|
|
192
|
+
|
|
193
|
+
## تعليمات الوثائق متعددة اللغات
|
|
194
|
+
|
|
195
|
+
لتحسين صيانة الوثائق متعددة اللغات، نقدم التوصيات التالية:
|
|
196
|
+
|
|
197
|
+
1. معايير تسمية الملفات
|
|
198
|
+
|
|
199
|
+
- استخدم رموز اللغة القياسية:
|
|
200
|
+
- النسخة الصينية: `README.zh-CN.md`
|
|
201
|
+
- النسخة الإنجليزية: `README.en.md`
|
|
202
|
+
- النسخة الإسبانية: `README.es.md`
|
|
203
|
+
- النسخة العربية: `README.ar.md`
|
|
204
|
+
- النسخة الفرنسية: `README.fr.md`
|
|
205
|
+
- النسخة الروسية: `README.ru.md`
|
|
206
|
+
- النسخة اليابانية: `README.ja.md`
|
|
207
|
+
|
|
208
|
+
2. تحديث الوثائق المتزامن
|
|
209
|
+
|
|
210
|
+
- استخدم سكريبت `sync-docs.js` للمزامنة التلقائية لجميع النسخ اللغوية
|
|
211
|
+
- قم بتشغيل `npm run sync-docs` بعد تعديل الوثيقة الرئيسية
|
|
212
|
+
- تأكد من اتساق هيكل جميع النسخ اللغوية
|
|
213
|
+
|
|
214
|
+
3. معايير الترجمة
|
|
215
|
+
|
|
216
|
+
- حافظ على اتساق المصطلحات التقنية
|
|
217
|
+
- احتفظ بأمثلة الكود باللغة الإنجليزية
|
|
218
|
+
- استخدم اللغة المناسبة للتعليقات والشروحات
|
|
219
|
+
- حافظ على توحيد تنسيق التخطيط
|
|
220
|
+
|
|
221
|
+
4. دليل المساهمة
|
|
222
|
+
|
|
223
|
+
- نرحب باقتراحات تحسين النسخ متعددة اللغات
|
|
224
|
+
- يرجى تحديث جميع النسخ اللغوية عند تقديم طلب السحب
|
|
225
|
+
- إذا وجدت مشكلة في الترجمة، يرجى تقديم مشكلة
|
|
226
|
+
|
|
227
|
+
5. تحسين تبديل اللغة
|
|
228
|
+
- أضف أيقونات تبديل اللغة في أعلى كل وثيقة
|
|
229
|
+
- حافظ على اتساق ترتيب روابط جميع اللغات
|
|
230
|
+
- اجعل رابط اللغة الحالية في حالة غير نشطة
|
package/README.en.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# an-cli
|
|
2
2
|
|
|
3
|
-
English| [Español](./README.es.md) | [العربية](./README.ar.md) | [Français](./README.fr.md) | [Русский](./README.ru.md) | [日本語](./README.jp.md) | 简体中文
|
|
3
|
+
English | [Español](./README.es.md) | [العربية](./README.ar.md) | [Français](./README.fr.md) | [Русский](./README.ru.md) | [日本語](./README.jp.md) | [简体中文](./README.md)
|
|
4
4
|
|
|
5
5
|
Frontend Command Line Tool
|
|
6
6
|
|
|
@@ -79,3 +79,152 @@ $ anl type
|
|
|
79
79
|
## Generated File Structure
|
|
80
80
|
|
|
81
81
|
- This file structure is generated based on the configuration file
|
|
82
|
+
|
|
83
|
+
project/
|
|
84
|
+
├── apps/
|
|
85
|
+
│ ├── types/
|
|
86
|
+
│ │ ├── models/ # All type definition files (excluding enums)
|
|
87
|
+
│ │ ├── connectors/ # API type definitions (interface files)
|
|
88
|
+
│ │ └── enums/ # Enum type definitions
|
|
89
|
+
│ └── api/
|
|
90
|
+
│ ├── fetch.ts # Request method implementation
|
|
91
|
+
│ └── index.ts # API request functions
|
|
92
|
+
|
|
93
|
+
## Generated Code Examples
|
|
94
|
+
|
|
95
|
+
### Type Definition File
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
declare namespace UserDetail_GET {
|
|
99
|
+
interface Query {
|
|
100
|
+
userId: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface Response {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
age: number;
|
|
107
|
+
role: UserRole;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### API Request Function
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { GET } from './fetch';
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Get user details
|
|
119
|
+
*/
|
|
120
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Feature Details
|
|
124
|
+
|
|
125
|
+
### Type Parsing
|
|
126
|
+
|
|
127
|
+
- Supports all OpenAPI 3.0 specification data types
|
|
128
|
+
- Automatically handles complex nested types
|
|
129
|
+
- Supports arrays, objects, enums, and other types
|
|
130
|
+
- Automatically generates interface comments
|
|
131
|
+
|
|
132
|
+
### File Upload
|
|
133
|
+
|
|
134
|
+
When file upload type is detected, corresponding headers will be automatically added:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
138
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
139
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Error Handling
|
|
144
|
+
|
|
145
|
+
The tool has built-in comprehensive error handling mechanisms:
|
|
146
|
+
|
|
147
|
+
- Parsing error prompts
|
|
148
|
+
- Type generation failure warnings
|
|
149
|
+
- File writing exception handling
|
|
150
|
+
|
|
151
|
+
## Development
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Install dependencies
|
|
155
|
+
npm install
|
|
156
|
+
|
|
157
|
+
# Development mode
|
|
158
|
+
Press F5 to debug
|
|
159
|
+
|
|
160
|
+
# Build
|
|
161
|
+
npm run build
|
|
162
|
+
|
|
163
|
+
# Local link debugging
|
|
164
|
+
npm run blink
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Important Notes
|
|
168
|
+
|
|
169
|
+
1. Ensure the Swagger JSON documentation URL is accessible
|
|
170
|
+
2. Paths in the configuration file should be relative to the project root directory
|
|
171
|
+
3. Generated files will overwrite existing files with the same name
|
|
172
|
+
4. It's recommended to include generated files in version control
|
|
173
|
+
|
|
174
|
+
## Common Issues
|
|
175
|
+
|
|
176
|
+
1. Generated type file formatting fails
|
|
177
|
+
|
|
178
|
+
- Check if prettier is installed
|
|
179
|
+
- Confirm if prettier configuration file exists in the project root
|
|
180
|
+
|
|
181
|
+
2. Request function import path error
|
|
182
|
+
- Check if requestMethodsImportPath configuration is correct
|
|
183
|
+
- Confirm if the request method file exists
|
|
184
|
+
|
|
185
|
+
## Contributing
|
|
186
|
+
|
|
187
|
+
Issues and Pull Requests are welcome!
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
ISC License
|
|
192
|
+
|
|
193
|
+
## Multi-language Documentation Guidelines
|
|
194
|
+
|
|
195
|
+
To better maintain multi-language documentation, we provide the following suggestions:
|
|
196
|
+
|
|
197
|
+
1. File Naming Convention
|
|
198
|
+
|
|
199
|
+
- Use standard language codes:
|
|
200
|
+
- Chinese: `README.zh-CN.md`
|
|
201
|
+
- English: `README.en.md`
|
|
202
|
+
- Spanish: `README.es.md`
|
|
203
|
+
- Arabic: `README.ar.md`
|
|
204
|
+
- French: `README.fr.md`
|
|
205
|
+
- Russian: `README.ru.md`
|
|
206
|
+
- Japanese: `README.ja.md`
|
|
207
|
+
|
|
208
|
+
2. Document Synchronization
|
|
209
|
+
|
|
210
|
+
- Use `sync-docs.js` script to automatically sync all language versions
|
|
211
|
+
- Run `npm run sync-docs` after modifying the main documentation
|
|
212
|
+
- Ensure consistent structure across all language versions
|
|
213
|
+
|
|
214
|
+
3. Translation Guidelines
|
|
215
|
+
|
|
216
|
+
- Maintain consistency in technical terms
|
|
217
|
+
- Keep code examples in English
|
|
218
|
+
- Use corresponding language for comments and explanations
|
|
219
|
+
- Maintain uniform formatting
|
|
220
|
+
|
|
221
|
+
4. Contribution Guidelines
|
|
222
|
+
|
|
223
|
+
- Welcome suggestions for improving multi-language versions
|
|
224
|
+
- Please update all language versions when submitting PRs
|
|
225
|
+
- Submit issues for translation problems
|
|
226
|
+
|
|
227
|
+
5. Language Switching Optimization
|
|
228
|
+
- Add language switching icons at the top of each document
|
|
229
|
+
- Maintain consistent order of language version links
|
|
230
|
+
- Keep current language link in inactive state
|
package/README.es.md
CHANGED
|
@@ -17,4 +17,213 @@ Una herramienta de línea de comandos que genera automáticamente definiciones d
|
|
|
17
17
|
- ⚡️ Soporte para carga de archivos
|
|
18
18
|
- 🛠 Opciones configurables de generación de código
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## Instalación
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ npm install anl -g
|
|
24
|
+
|
|
25
|
+
$ yarn global add anl
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Uso
|
|
29
|
+
|
|
30
|
+
1. Ejecutar el comando
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ anl type
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Completar la configuración
|
|
37
|
+
|
|
38
|
+
- La primera vez que ejecute `anl type`, se creará automáticamente un archivo de configuración llamado `an.config.json` en la raíz del proyecto (también puede crearlo manualmente)
|
|
39
|
+
- Consulte la descripción de la configuración para obtener detalles sobre los parámetros
|
|
40
|
+
- El nombre del archivo de configuración no se puede modificar
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"saveTypeFolderPath": "apps/types",
|
|
45
|
+
"saveApiListFolderPath": "apps/api/",
|
|
46
|
+
"saveEnumFolderPath": "apps/enums",
|
|
47
|
+
"importEnumPath": "../../enums",
|
|
48
|
+
"swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
|
|
49
|
+
"requestMethodsImportPath": "./fetch",
|
|
50
|
+
"dataLevel": "serve",
|
|
51
|
+
"formatting": {
|
|
52
|
+
"indentation": "\t",
|
|
53
|
+
"lineEnding": "\n"
|
|
54
|
+
},
|
|
55
|
+
"headers": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. Generar definiciones de tipos TypeScript y funciones de solicitud de API, ejecute el comando nuevamente
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ anl type
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Configuración
|
|
66
|
+
|
|
67
|
+
| Parámetro | Tipo | Requerido | Descripción |
|
|
68
|
+
| ------------------------ | ---------------------------- | --------- | ------------------------------------------------- |
|
|
69
|
+
| saveTypeFolderPath | string | Sí | Ruta para guardar archivos de definición de tipos |
|
|
70
|
+
| saveApiListFolderPath | string | Sí | Ruta para guardar funciones de solicitud API |
|
|
71
|
+
| saveEnumFolderPath | string | Sí | Ruta para guardar tipos enum |
|
|
72
|
+
| importEnumPath | string | Sí | Ruta de importación para tipos enum |
|
|
73
|
+
| swaggerJsonUrl | string | Sí | URL del documento Swagger JSON |
|
|
74
|
+
| requestMethodsImportPath | string | Sí | Ruta de importación para métodos de solicitud |
|
|
75
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | Sí | Nivel de datos de respuesta de la API |
|
|
76
|
+
| formatting | object | No | Configuración de formato de código |
|
|
77
|
+
| headers | object | No | Configuración de encabezados de solicitud |
|
|
78
|
+
|
|
79
|
+
## Estructura de Archivos Generados
|
|
80
|
+
|
|
81
|
+
- Esta estructura de archivos se genera según el archivo de configuración
|
|
82
|
+
project/
|
|
83
|
+
├── apps/
|
|
84
|
+
│ ├── types/
|
|
85
|
+
│ │ ├── models/ # Todos los archivos de definición de tipos (excluyendo enums)
|
|
86
|
+
│ │ ├── connectors/ # Definiciones de tipos API (archivos de interfaz)
|
|
87
|
+
│ │ └── enums/ # Definiciones de tipos enum
|
|
88
|
+
│ └── api/
|
|
89
|
+
│ ├── fetch.ts # Implementación de métodos de solicitud
|
|
90
|
+
│ └── index.ts # Funciones de solicitud API
|
|
91
|
+
|
|
92
|
+
## Ejemplos de Código Generado
|
|
93
|
+
|
|
94
|
+
### Archivo de Definición de Tipos
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
declare namespace UserDetail_GET {
|
|
98
|
+
interface Query {
|
|
99
|
+
userId: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
interface Response {
|
|
103
|
+
id: string;
|
|
104
|
+
name: string;
|
|
105
|
+
age: number;
|
|
106
|
+
role: UserRole;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Función de Solicitud API
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { GET } from './fetch';
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Obtener detalles del usuario
|
|
118
|
+
*/
|
|
119
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Características Detalladas
|
|
123
|
+
|
|
124
|
+
### Análisis de Tipos
|
|
125
|
+
|
|
126
|
+
- Soporta todos los tipos de datos del estándar OpenAPI 3.0
|
|
127
|
+
- Manejo automático de tipos anidados complejos
|
|
128
|
+
- Soporte para arrays, objetos, enums y otros tipos
|
|
129
|
+
- Generación automática de comentarios de interfaz
|
|
130
|
+
|
|
131
|
+
### Carga de Archivos
|
|
132
|
+
|
|
133
|
+
Cuando se detecta un tipo de carga de archivo, se añade automáticamente el encabezado correspondiente:
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
137
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
138
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Manejo de Errores
|
|
143
|
+
|
|
144
|
+
La herramienta incluye un mecanismo completo de manejo de errores:
|
|
145
|
+
|
|
146
|
+
- Mensajes de error de análisis
|
|
147
|
+
- Advertencias de fallos en la generación de tipos
|
|
148
|
+
- Manejo de excepciones en la escritura de archivos
|
|
149
|
+
|
|
150
|
+
## Desarrollo
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Instalar dependencias
|
|
154
|
+
npm install
|
|
155
|
+
|
|
156
|
+
# Modo desarrollo
|
|
157
|
+
Presionar F5 para depurar
|
|
158
|
+
|
|
159
|
+
# Construir
|
|
160
|
+
npm run build
|
|
161
|
+
|
|
162
|
+
# Enlace local para pruebas
|
|
163
|
+
npm run blink
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Consideraciones
|
|
167
|
+
|
|
168
|
+
1. Asegúrese de que la URL del documento Swagger JSON sea accesible
|
|
169
|
+
2. Las rutas en el archivo de configuración deben ser relativas a la raíz del proyecto
|
|
170
|
+
3. Los archivos generados sobrescribirán los archivos existentes con el mismo nombre
|
|
171
|
+
4. Se recomienda incluir los archivos generados en el control de versiones
|
|
172
|
+
|
|
173
|
+
## Problemas Comunes
|
|
174
|
+
|
|
175
|
+
1. Fallo en el formato de los archivos de tipos generados
|
|
176
|
+
|
|
177
|
+
- Verificar si prettier está instalado
|
|
178
|
+
- Confirmar si existe un archivo de configuración de prettier en la raíz del proyecto
|
|
179
|
+
|
|
180
|
+
2. Error en la ruta de importación de funciones de solicitud
|
|
181
|
+
- Verificar si la configuración de requestMethodsImportPath es correcta
|
|
182
|
+
- Confirmar si existe el archivo de métodos de solicitud
|
|
183
|
+
|
|
184
|
+
## Guía de Contribución
|
|
185
|
+
|
|
186
|
+
¡Las Issues y Pull Requests son bienvenidas!
|
|
187
|
+
|
|
188
|
+
## Licencia
|
|
189
|
+
|
|
190
|
+
Licencia ISC
|
|
191
|
+
|
|
192
|
+
## Documentación Multilingüe
|
|
193
|
+
|
|
194
|
+
Para mantener mejor la documentación multilingüe, proporcionamos las siguientes recomendaciones:
|
|
195
|
+
|
|
196
|
+
1. Convención de Nombres de Archivos
|
|
197
|
+
|
|
198
|
+
- Usar códigos de idioma estándar:
|
|
199
|
+
- Chino: `README.zh-CN.md`
|
|
200
|
+
- Inglés: `README.en.md`
|
|
201
|
+
- Español: `README.es.md`
|
|
202
|
+
- Árabe: `README.ar.md`
|
|
203
|
+
- Francés: `README.fr.md`
|
|
204
|
+
- Ruso: `README.ru.md`
|
|
205
|
+
- Japonés: `README.ja.md`
|
|
206
|
+
|
|
207
|
+
2. Actualización de Documentación
|
|
208
|
+
|
|
209
|
+
- Usar el script `sync-docs.js` para sincronizar automáticamente todas las versiones
|
|
210
|
+
- Ejecutar `npm run sync-docs` después de modificar la documentación principal
|
|
211
|
+
- Asegurar que todas las versiones mantengan la misma estructura
|
|
212
|
+
|
|
213
|
+
3. Normas de Traducción
|
|
214
|
+
|
|
215
|
+
- Mantener consistencia en términos técnicos
|
|
216
|
+
- Mantener ejemplos de código en inglés
|
|
217
|
+
- Usar el idioma correspondiente para comentarios y explicaciones
|
|
218
|
+
- Mantener formato uniforme
|
|
219
|
+
|
|
220
|
+
4. Guía de Contribución
|
|
221
|
+
|
|
222
|
+
- Se aceptan sugerencias para mejorar las versiones en diferentes idiomas
|
|
223
|
+
- Actualizar todas las versiones al enviar PR
|
|
224
|
+
- Crear Issues para problemas de traducción
|
|
225
|
+
|
|
226
|
+
5. Optimización de Cambio de Idioma
|
|
227
|
+
- Añadir iconos de cambio de idioma en la parte superior de cada documento
|
|
228
|
+
- Mantener orden consistente en enlaces de idiomas
|
|
229
|
+
- Mantener enlace del idioma actual en estado inactivo
|
package/README.fr.md
CHANGED
|
@@ -17,4 +17,210 @@ Un outil en ligne de commande qui génère automatiquement des définitions de t
|
|
|
17
17
|
- ⚡️ Prise en charge du téléchargement de fichiers
|
|
18
18
|
- 🛠 Options de génération de code configurables
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ npm install anl -g
|
|
24
|
+
|
|
25
|
+
$ yarn global add anl
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Utilisation
|
|
29
|
+
|
|
30
|
+
1. Exécuter la commande
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ anl type
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Configurer le projet
|
|
37
|
+
|
|
38
|
+
- Lors de la première exécution de `anl type`, un fichier de configuration nommé `an.config.json` sera automatiquement créé dans le répertoire racine du projet (ou peut être créé manuellement)
|
|
39
|
+
- Voir la section Configuration pour plus de détails
|
|
40
|
+
- Le nom du fichier de configuration ne peut pas être modifié
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"saveTypeFolderPath": "apps/types",
|
|
45
|
+
"saveApiListFolderPath": "apps/api/",
|
|
46
|
+
"saveEnumFolderPath": "apps/enums",
|
|
47
|
+
"importEnumPath": "../../enums",
|
|
48
|
+
"swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
|
|
49
|
+
"requestMethodsImportPath": "./fetch",
|
|
50
|
+
"dataLevel": "serve",
|
|
51
|
+
"formatting": {
|
|
52
|
+
"indentation": "\t",
|
|
53
|
+
"lineEnding": "\n"
|
|
54
|
+
},
|
|
55
|
+
"headers": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. Générer les définitions de types TypeScript et les fonctions API en exécutant à nouveau la commande
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ anl type
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Configuration
|
|
66
|
+
|
|
67
|
+
| Option | Type | Requis | Description |
|
|
68
|
+
| ------------------------ | ---------------------------- | ------ | -------------------------------------------- |
|
|
69
|
+
| saveTypeFolderPath | string | Oui | Chemin de sauvegarde des fichiers de types |
|
|
70
|
+
| saveApiListFolderPath | string | Oui | Chemin de sauvegarde des fonctions API |
|
|
71
|
+
| saveEnumFolderPath | string | Oui | Chemin de sauvegarde des énumérations |
|
|
72
|
+
| importEnumPath | string | Oui | Chemin d'importation des énumérations |
|
|
73
|
+
| swaggerJsonUrl | string | Oui | URL du document Swagger JSON |
|
|
74
|
+
| requestMethodsImportPath | string | Oui | Chemin d'importation des méthodes de requête |
|
|
75
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | Oui | Niveau de données de réponse |
|
|
76
|
+
| formatting | object | Non | Configuration du formatage du code |
|
|
77
|
+
| headers | object | Non | Configuration des en-têtes de requête |
|
|
78
|
+
|
|
79
|
+
## Structure des Fichiers Générés
|
|
80
|
+
|
|
81
|
+
project/
|
|
82
|
+
├── apps/
|
|
83
|
+
│ ├── types/
|
|
84
|
+
│ │ ├── models/ # Fichiers de définition de types (sans énumérations)
|
|
85
|
+
│ │ ├── connectors/ # Définitions de types API
|
|
86
|
+
│ │ └── enums/ # Définitions des types énumérés
|
|
87
|
+
│ └── api/
|
|
88
|
+
│ ├── fetch.ts # Implémentation des méthodes de requête
|
|
89
|
+
│ └── index.ts # Fonctions de requête API
|
|
90
|
+
|
|
91
|
+
## Exemples de Code Générés
|
|
92
|
+
|
|
93
|
+
### Fichier de Définition de Type
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
declare namespace UserDetail_GET {
|
|
97
|
+
interface Query {
|
|
98
|
+
userId: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
interface Response {
|
|
102
|
+
id: string;
|
|
103
|
+
name: string;
|
|
104
|
+
age: number;
|
|
105
|
+
role: UserRole;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Fonction de Requête API
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { GET } from './fetch';
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Obtenir les détails de l'utilisateur
|
|
117
|
+
*/
|
|
118
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Caractéristiques
|
|
122
|
+
|
|
123
|
+
### Analyse des Types
|
|
124
|
+
|
|
125
|
+
- Prise en charge de tous les types de données OpenAPI 3.0
|
|
126
|
+
- Traitement automatique des types imbriqués complexes
|
|
127
|
+
- Prise en charge des tableaux, objets, énumérations
|
|
128
|
+
- Génération automatique des commentaires d'interface
|
|
129
|
+
|
|
130
|
+
### Téléchargement de Fichiers
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
134
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
135
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Gestion des Erreurs
|
|
140
|
+
|
|
141
|
+
L'outil intègre un mécanisme complet de gestion des erreurs :
|
|
142
|
+
|
|
143
|
+
- Messages d'erreur d'analyse
|
|
144
|
+
- Avertissements de génération de types
|
|
145
|
+
- Gestion des exceptions d'écriture de fichiers
|
|
146
|
+
|
|
147
|
+
## Développement
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Installation des dépendances
|
|
151
|
+
npm install
|
|
152
|
+
|
|
153
|
+
# Mode développement
|
|
154
|
+
Appuyez sur F5 pour déboguer
|
|
155
|
+
|
|
156
|
+
# Construction
|
|
157
|
+
npm run build
|
|
158
|
+
|
|
159
|
+
# Liaison locale pour le débogage
|
|
160
|
+
npm run blink
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Points Importants
|
|
164
|
+
|
|
165
|
+
1. Assurez-vous que l'URL du document Swagger JSON est accessible
|
|
166
|
+
2. Les chemins dans le fichier de configuration doivent être relatifs à la racine du projet
|
|
167
|
+
3. Les fichiers générés écraseront les fichiers existants du même nom
|
|
168
|
+
4. Il est recommandé d'inclure les fichiers générés dans le contrôle de version
|
|
169
|
+
|
|
170
|
+
## FAQ
|
|
171
|
+
|
|
172
|
+
1. Échec du formatage des fichiers de types générés
|
|
173
|
+
|
|
174
|
+
- Vérifiez si prettier est installé
|
|
175
|
+
- Vérifiez la présence du fichier de configuration prettier dans la racine du projet
|
|
176
|
+
|
|
177
|
+
2. Erreur de chemin d'importation des fonctions de requête
|
|
178
|
+
- Vérifiez la configuration de requestMethodsImportPath
|
|
179
|
+
- Confirmez l'existence du fichier des méthodes de requête
|
|
180
|
+
|
|
181
|
+
## Guide de Contribution
|
|
182
|
+
|
|
183
|
+
Les Issues et Pull Requests sont les bienvenus !
|
|
184
|
+
|
|
185
|
+
## Licence
|
|
186
|
+
|
|
187
|
+
Licence ISC
|
|
188
|
+
|
|
189
|
+
## Documentation Multilingue
|
|
190
|
+
|
|
191
|
+
Pour une meilleure maintenance de la documentation multilingue, nous suggérons :
|
|
192
|
+
|
|
193
|
+
1. Convention de Nommage des Fichiers
|
|
194
|
+
|
|
195
|
+
- Utilisation des codes de langue standard :
|
|
196
|
+
- Chinois : `README.zh-CN.md`
|
|
197
|
+
- Anglais : `README.en.md`
|
|
198
|
+
- Espagnol : `README.es.md`
|
|
199
|
+
- Arabe : `README.ar.md`
|
|
200
|
+
- Français : `README.fr.md`
|
|
201
|
+
- Russe : `README.ru.md`
|
|
202
|
+
- Japonais : `README.ja.md`
|
|
203
|
+
|
|
204
|
+
2. Synchronisation des Documents
|
|
205
|
+
|
|
206
|
+
- Utilisez le script `sync-docs.js` pour synchroniser automatiquement
|
|
207
|
+
- Exécutez `npm run sync-docs` après les modifications
|
|
208
|
+
- Maintenez une structure cohérente dans toutes les versions
|
|
209
|
+
|
|
210
|
+
3. Normes de Traduction
|
|
211
|
+
|
|
212
|
+
- Maintenir la cohérence des termes techniques
|
|
213
|
+
- Conserver les exemples de code en anglais
|
|
214
|
+
- Utiliser la langue correspondante pour les commentaires
|
|
215
|
+
- Maintenir un format uniforme
|
|
216
|
+
|
|
217
|
+
4. Guide de Contribution
|
|
218
|
+
|
|
219
|
+
- Les suggestions d'amélioration multilingue sont bienvenues
|
|
220
|
+
- Mettre à jour toutes les versions lors des PR
|
|
221
|
+
- Signaler les problèmes de traduction via Issues
|
|
222
|
+
|
|
223
|
+
5. Optimisation du Changement de Langue
|
|
224
|
+
- Icônes de changement de langue en haut de chaque document
|
|
225
|
+
- Ordre cohérent des liens linguistiques
|
|
226
|
+
- Lien de la langue actuelle désactivé
|
package/README.jp.md
CHANGED
|
@@ -17,4 +17,214 @@ Swagger JSONに基づいてTypeScriptの型定義とAPIリクエスト関数を
|
|
|
17
17
|
- ⚡️ ファイルアップロードのサポート
|
|
18
18
|
- 🛠 設定可能なコード生成オプション
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## インストール
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ npm install anl -g
|
|
24
|
+
|
|
25
|
+
$ yarn global add anl
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 使用方法
|
|
29
|
+
|
|
30
|
+
1. コマンドの実行
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ anl type
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. 設定の完了
|
|
37
|
+
|
|
38
|
+
- 初めて `anl type` コマンドを実行すると、*プロジェクトのルートディレクトリ*に `an.config.json` という名前の設定ファイルが*自動的に作成*されます(手動で作成することも可能です)。
|
|
39
|
+
- 具体的なパラメータについては設定項目の説明をご覧ください。
|
|
40
|
+
- 設定ファイル名は変更できません。
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"saveTypeFolderPath": "apps/types",
|
|
45
|
+
"saveApiListFolderPath": "apps/api/",
|
|
46
|
+
"saveEnumFolderPath": "apps/enums",
|
|
47
|
+
"importEnumPath": "../../enums",
|
|
48
|
+
"swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
|
|
49
|
+
"requestMethodsImportPath": "./fetch",
|
|
50
|
+
"dataLevel": "serve",
|
|
51
|
+
"formatting": {
|
|
52
|
+
"indentation": "\t",
|
|
53
|
+
"lineEnding": "\n"
|
|
54
|
+
},
|
|
55
|
+
"headers": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. TypeScript型定義とAPIリクエスト関数の生成は、再度生成コマンドを実行するだけです。
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ anl type
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 設定項目の説明
|
|
66
|
+
|
|
67
|
+
| 設定項目 | 型 | 必須 | 説明 |
|
|
68
|
+
| ------------------------ | ---------------------------- | ------ | ---------------------------------- |
|
|
69
|
+
| saveTypeFolderPath | string | はい | 型定義ファイルの保存パス |
|
|
70
|
+
| saveApiListFolderPath | string | はい | APIリクエスト関数の保存パス |
|
|
71
|
+
| saveEnumFolderPath | string | はい | 列挙型ファイルの保存パス |
|
|
72
|
+
| importEnumPath | string | はい | 列挙型のインポートパス |
|
|
73
|
+
| swaggerJsonUrl | string | はい | Swagger JSONドキュメントのURL |
|
|
74
|
+
| requestMethodsImportPath | string | はい | リクエストメソッドのインポートパス |
|
|
75
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | はい | インターフェースの戻り値レベル |
|
|
76
|
+
| formatting | object | いいえ | コードフォーマット設定 |
|
|
77
|
+
| headers | object | いいえ | リクエストヘッダー設定 |
|
|
78
|
+
|
|
79
|
+
## 生成されるファイル構造
|
|
80
|
+
|
|
81
|
+
- このファイル構造は設定ファイルに基づいて生成されます
|
|
82
|
+
|
|
83
|
+
project/
|
|
84
|
+
├── apps/
|
|
85
|
+
│ ├── types/
|
|
86
|
+
│ │ ├── models/ # すべての型定義ファイル(列挙型を除く)
|
|
87
|
+
│ │ ├── connectors/ # API型定義(インターフェース定義ファイル)
|
|
88
|
+
│ │ └── enums/ # 列挙型定義
|
|
89
|
+
│ └── api/
|
|
90
|
+
│ ├── fetch.ts # リクエストメソッドの実装
|
|
91
|
+
│ └── index.ts # APIリクエスト関数
|
|
92
|
+
|
|
93
|
+
## 生成されるコードの例
|
|
94
|
+
|
|
95
|
+
### 型定義ファイル
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
declare namespace UserDetail_GET {
|
|
99
|
+
interface Query {
|
|
100
|
+
userId: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface Response {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
age: number;
|
|
107
|
+
role: UserRole;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### APIリクエスト関数
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { GET } from './fetch';
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* ユーザー詳細の取得
|
|
119
|
+
*/
|
|
120
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 機能の説明
|
|
124
|
+
|
|
125
|
+
### 型解析
|
|
126
|
+
|
|
127
|
+
- OpenAPI 3.0仕様のすべてのデータ型をサポート
|
|
128
|
+
- 複雑なネスト型を自動処理
|
|
129
|
+
- 配列、オブジェクト、列挙型などをサポート
|
|
130
|
+
- インターフェースコメントを自動生成
|
|
131
|
+
|
|
132
|
+
### ファイルアップロード
|
|
133
|
+
|
|
134
|
+
ファイルアップロード型が検出された場合、対応するリクエストヘッダーが自動的に追加されます:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
138
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
139
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### エラー処理
|
|
144
|
+
|
|
145
|
+
ツールには包括的なエラー処理メカニズムが組み込まれています:
|
|
146
|
+
|
|
147
|
+
- 解析エラーの通知
|
|
148
|
+
- 型生成失敗の警告
|
|
149
|
+
- ファイル書き込みの例外処理
|
|
150
|
+
|
|
151
|
+
## 開発
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# 依存関係のインストール
|
|
155
|
+
npm install
|
|
156
|
+
|
|
157
|
+
# 開発モード
|
|
158
|
+
F5キーでデバッグ
|
|
159
|
+
|
|
160
|
+
# ビルド
|
|
161
|
+
npm run build
|
|
162
|
+
|
|
163
|
+
# ローカルリンクデバッグ
|
|
164
|
+
npm run blink
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## 注意事項
|
|
168
|
+
|
|
169
|
+
1. Swagger JSONドキュメントのURLにアクセスできることを確認してください
|
|
170
|
+
2. 設定ファイルのパスはプロジェクトルートディレクトリからの相対パスである必要があります
|
|
171
|
+
3. 生成されたファイルは既存の同名ファイルを上書きします
|
|
172
|
+
4. 生成されたファイルはバージョン管理に含めることをお勧めします
|
|
173
|
+
|
|
174
|
+
## よくある質問
|
|
175
|
+
|
|
176
|
+
1. 生成された型ファイルのフォーマットに失敗する
|
|
177
|
+
|
|
178
|
+
- prettierがインストールされているか確認してください
|
|
179
|
+
- プロジェクトルートディレクトリにprettier設定ファイルが存在するか確認してください
|
|
180
|
+
|
|
181
|
+
2. リクエスト関数のインポートパスが間違っている
|
|
182
|
+
- requestMethodsImportPathの設定が正しいか確認してください
|
|
183
|
+
- リクエストメソッドファイルが存在するか確認してください
|
|
184
|
+
|
|
185
|
+
## 貢献ガイド
|
|
186
|
+
|
|
187
|
+
IssueやPull Requestを歓迎します!
|
|
188
|
+
|
|
189
|
+
## ライセンス
|
|
190
|
+
|
|
191
|
+
ISC License
|
|
192
|
+
|
|
193
|
+
## 多言語ドキュメントについて
|
|
194
|
+
|
|
195
|
+
多言語ドキュメントをより良く管理するために、以下の提案を提供します:
|
|
196
|
+
|
|
197
|
+
1. ファイル命名規則
|
|
198
|
+
|
|
199
|
+
- 標準的な言語コードを使用:
|
|
200
|
+
- 中国語版:`README.zh-CN.md`
|
|
201
|
+
- 英語版:`README.en.md`
|
|
202
|
+
- スペイン語版:`README.es.md`
|
|
203
|
+
- アラビア語版:`README.ar.md`
|
|
204
|
+
- フランス語版:`README.fr.md`
|
|
205
|
+
- ロシア語版:`README.ru.md`
|
|
206
|
+
- 日本語版:`README.ja.md`
|
|
207
|
+
|
|
208
|
+
2. ドキュメントの同期更新
|
|
209
|
+
|
|
210
|
+
- `sync-docs.js`スクリプトを使用してすべての言語バージョンを自動同期
|
|
211
|
+
- メインドキュメントを修正後、`npm run sync-docs`を実行
|
|
212
|
+
- すべての言語バージョンの構造が一貫していることを確認
|
|
213
|
+
|
|
214
|
+
3. 翻訳規則
|
|
215
|
+
|
|
216
|
+
- 専門用語の一貫性を保持
|
|
217
|
+
- コード例は英語のまま
|
|
218
|
+
- コメントと説明は対応する言語を使用
|
|
219
|
+
- レイアウトフォーマットの統一性を保持
|
|
220
|
+
|
|
221
|
+
4. 貢献ガイドライン
|
|
222
|
+
|
|
223
|
+
- 多言語バージョンの改善提案を歓迎
|
|
224
|
+
- PRを提出する際は、すべての言語バージョンを更新してください
|
|
225
|
+
- 翻訳の問題を発見した場合は、Issueを提出してください
|
|
226
|
+
|
|
227
|
+
5. 言語切り替えの最適化
|
|
228
|
+
- 各ドキュメントの上部に言語切り替えアイコンを追加
|
|
229
|
+
- すべての言語バージョンのリンク順序を一貫させる
|
|
230
|
+
- 現在の言語リンクは非アクティブ状態を維持
|
package/README.ru.md
CHANGED
|
@@ -17,4 +17,211 @@
|
|
|
17
17
|
- ⚡️ Поддержка загрузки файлов
|
|
18
18
|
- 🛠 Настраиваемые параметры генерации кода
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## Установка
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ npm install anl -g
|
|
24
|
+
|
|
25
|
+
$ yarn global add anl
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Использование
|
|
29
|
+
|
|
30
|
+
1. Выполните команду
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ anl type
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Настройте конфигурацию
|
|
37
|
+
|
|
38
|
+
- При первом выполнении команды `anl type` в корневой директории проекта автоматически создается файл конфигурации `an.config.json` (также можно создать вручную)
|
|
39
|
+
- Подробное описание параметров смотрите в разделе конфигурации
|
|
40
|
+
- Имя файла конфигурации изменять нельзя
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"saveTypeFolderPath": "apps/types",
|
|
45
|
+
"saveApiListFolderPath": "apps/api/",
|
|
46
|
+
"saveEnumFolderPath": "apps/enums",
|
|
47
|
+
"importEnumPath": "../../enums",
|
|
48
|
+
"swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
|
|
49
|
+
"requestMethodsImportPath": "./fetch",
|
|
50
|
+
"dataLevel": "serve",
|
|
51
|
+
"formatting": {
|
|
52
|
+
"indentation": "\t",
|
|
53
|
+
"lineEnding": "\n"
|
|
54
|
+
},
|
|
55
|
+
"headers": {}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. Сгенерируйте определения типов TypeScript и функции запросов API, выполнив команду еще раз
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
$ anl type
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Параметры конфигурации
|
|
66
|
+
|
|
67
|
+
| Параметр | Тип | Обязательный | Описание |
|
|
68
|
+
| ------------------------ | ---------------------------- | ------------ | ---------------------------------------- |
|
|
69
|
+
| saveTypeFolderPath | string | Да | Путь сохранения файлов определения типов |
|
|
70
|
+
| saveApiListFolderPath | string | Да | Путь сохранения файлов функций API |
|
|
71
|
+
| saveEnumFolderPath | string | Да | Путь сохранения файлов перечислений |
|
|
72
|
+
| importEnumPath | string | Да | Путь импорта перечислений |
|
|
73
|
+
| swaggerJsonUrl | string | Да | URL документации Swagger JSON |
|
|
74
|
+
| requestMethodsImportPath | string | Да | Путь импорта методов запроса |
|
|
75
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | Да | Уровень возвращаемых данных |
|
|
76
|
+
| formatting | object | Нет | Настройки форматирования кода |
|
|
77
|
+
| headers | object | Нет | Настройки заголовков запроса |
|
|
78
|
+
|
|
79
|
+
## Структура генерируемых файлов
|
|
80
|
+
|
|
81
|
+
├── apps/
|
|
82
|
+
│ ├── types/
|
|
83
|
+
│ │ ├── models/ # Все определения типов (кроме перечислений)
|
|
84
|
+
│ │ ├── connectors/ # Определения типов API
|
|
85
|
+
│ │ └── enums/ # Определения перечислений
|
|
86
|
+
│ └── api/
|
|
87
|
+
│ ├── fetch.ts # Реализация методов запроса
|
|
88
|
+
│ └── index.ts # Функции запросов API
|
|
89
|
+
|
|
90
|
+
## Примеры генерируемого кода
|
|
91
|
+
|
|
92
|
+
### Файл определения типов
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
declare namespace UserDetail_GET {
|
|
96
|
+
interface Query {
|
|
97
|
+
userId: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
interface Response {
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
age: number;
|
|
104
|
+
role: UserRole;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Функции запросов API
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
import { GET } from './fetch';
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Получить детали пользователя
|
|
116
|
+
*/
|
|
117
|
+
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Описание функциональности
|
|
121
|
+
|
|
122
|
+
### Анализ типов
|
|
123
|
+
|
|
124
|
+
- Поддержка всех типов данных спецификации OpenAPI 3.0
|
|
125
|
+
- Автоматическая обработка сложных вложенных типов
|
|
126
|
+
- Поддержка массивов, объектов, перечислений
|
|
127
|
+
- Автоматическая генерация комментариев интерфейсов
|
|
128
|
+
|
|
129
|
+
### Загрузка файлов
|
|
130
|
+
|
|
131
|
+
При обнаружении типа загрузки файлов автоматически добавляются соответствующие заголовки:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
export const uploadFile = (params: UploadFile.Body) =>
|
|
135
|
+
POST<UploadFile.Response>('/upload', params, {
|
|
136
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Обработка ошибок
|
|
141
|
+
|
|
142
|
+
Инструмент имеет встроенный механизм обработки ошибок:
|
|
143
|
+
|
|
144
|
+
- Уведомления об ошибках разбора
|
|
145
|
+
- Предупреждения о неудачной генерации типов
|
|
146
|
+
- Обработка исключений при записи файлов
|
|
147
|
+
|
|
148
|
+
## Разработка
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Установка зависимостей
|
|
152
|
+
npm install
|
|
153
|
+
|
|
154
|
+
# Режим разработки
|
|
155
|
+
Нажмите F5 для отладки
|
|
156
|
+
|
|
157
|
+
# Сборка
|
|
158
|
+
npm run build
|
|
159
|
+
|
|
160
|
+
# Локальная отладка
|
|
161
|
+
npm run blink
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Важные замечания
|
|
165
|
+
|
|
166
|
+
1. Убедитесь, что URL документации Swagger JSON доступен
|
|
167
|
+
2. Пути в файле конфигурации должны быть относительно корневой директории проекта
|
|
168
|
+
3. Генерируемые файлы перезапишут существующие файлы с тем же именем
|
|
169
|
+
4. Рекомендуется добавить генерируемые файлы в систему контроля версий
|
|
170
|
+
|
|
171
|
+
## Часто задаваемые вопросы
|
|
172
|
+
|
|
173
|
+
1. Не удается отформатировать сгенерированные файлы типов
|
|
174
|
+
|
|
175
|
+
- Проверьте, установлен ли prettier
|
|
176
|
+
- Убедитесь, что в корневой директории проекта есть файл конфигурации prettier
|
|
177
|
+
|
|
178
|
+
2. Ошибка в пути импорта функций запроса
|
|
179
|
+
- Проверьте правильность настройки requestMethodsImportPath
|
|
180
|
+
- Убедитесь, что файл с методами запроса существует
|
|
181
|
+
|
|
182
|
+
## Руководство по содействию
|
|
183
|
+
|
|
184
|
+
Приветствуются Issue и Pull Request!
|
|
185
|
+
|
|
186
|
+
## Лицензия
|
|
187
|
+
|
|
188
|
+
ISC License
|
|
189
|
+
|
|
190
|
+
## Документация на разных языках
|
|
191
|
+
|
|
192
|
+
Для лучшего управления многоязычной документацией мы предлагаем следующие рекомендации:
|
|
193
|
+
|
|
194
|
+
1. Правила именования файлов
|
|
195
|
+
|
|
196
|
+
- Используйте стандартные языковые коды:
|
|
197
|
+
- Китайский: `README.zh-CN.md`
|
|
198
|
+
- Английский: `README.en.md`
|
|
199
|
+
- Испанский: `README.es.md`
|
|
200
|
+
- Арабский: `README.ar.md`
|
|
201
|
+
- Французский: `README.fr.md`
|
|
202
|
+
- Русский: `README.ru.md`
|
|
203
|
+
- Японский: `README.ja.md`
|
|
204
|
+
|
|
205
|
+
2. Синхронизация документации
|
|
206
|
+
|
|
207
|
+
- Используйте скрипт `sync-docs.js` для автоматической синхронизации всех языковых версий
|
|
208
|
+
- Запускайте `npm run sync-docs` после изменения основной документации
|
|
209
|
+
- Обеспечьте согласованность структуры всех языковых версий
|
|
210
|
+
|
|
211
|
+
3. Правила перевода
|
|
212
|
+
|
|
213
|
+
- Поддерживайте согласованность технических терминов
|
|
214
|
+
- Сохраняйте примеры кода на английском языке
|
|
215
|
+
- Используйте соответствующий язык для комментариев и пояснений
|
|
216
|
+
- Поддерживайте единообразие форматирования
|
|
217
|
+
|
|
218
|
+
4. Руководство по содействию
|
|
219
|
+
|
|
220
|
+
- Приветствуются предложения по улучшению многоязычных версий
|
|
221
|
+
- Обновляйте все языковые версии при отправке PR
|
|
222
|
+
- Создавайте Issue при обнаружении проблем с переводом
|
|
223
|
+
|
|
224
|
+
5. Оптимизация переключения языков
|
|
225
|
+
- Добавляйте значки переключения языков в верхней части каждого документа
|
|
226
|
+
- Поддерживайте последовательный порядок ссылок на все языковые версии
|
|
227
|
+
- Оставляйте ссылку на текущий язык неактивной
|
package/lib/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="1.5.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="1.5.9",i="FE command line tool",s="bin/an-cli.js",p={dev:"rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript -w",build:"rimraf lib && rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript",pub:"bash publish.sh",ts:"tsc ./src/int.ts --noEmit --watch",blink:"npm run build && npm link","sync-docs":"node scripts/sync-docs.js"},l={anl:"bin/an-cli.js"},o="Gleason <bianliuzhu@gmail.com>",t={"@commitlint/cli":"^17.4.3","@commitlint/config-conventional":"^17.4.3","@rollup/plugin-commonjs":"^21.0.1","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.1.3","@rollup/plugin-typescript":"^8.3.0","@types/inquirer":"^9.0.3","@types/shelljs":"^0.8.11","@typescript-eslint/eslint-plugin":"^5.52.0","@typescript-eslint/parser":"^5.52.0","cross-env":"^7.0.3",eslint:"^8.7.0",husky:"^8.0.3","openapi-types":"^12.1.3",prettier:"^3.3.2",rimraf:"^5.0.7",rollup:"^2.64.0","rollup-plugin-cleandir":"^2.0.0","rollup-plugin-copy":"^3.5.0","rollup-plugin-terser":"^7.0.2",typescript:"^4.5.4"},r={"app-root-path":"^3.1.0",cac:"^6.7.12",chalk:"4.*","clear-console":"^1.1.0",commander:"^10.0.0",figures:"^6.1.0",inquirer:"^10.1.8","log-symbols":"^5.1.0",ora:"5.*","progress-estimator":"^0.3.0",shelljs:"^0.8.5"},n=["typescript","cli","typescript 脚手架","ts 脚手架","ts-cli","脚手架"],c=["package.json","README.md","lib","template"],u={type:"git",url:"https://github.com/bianliuzhu/an-cli.git"},a="commonjs",m={name:"anl",version:e,description:i,main:s,scripts:p,bin:l,author:o,license:"ISC",devDependencies:t,dependencies:r,keywords:n,files:c,repository:u,type:a};exports.author=o,exports.bin=l,exports.default=m,exports.dependencies=r,exports.description=i,exports.devDependencies=t,exports.files=c,exports.keywords=n,exports.license="ISC",exports.main=s,exports.name="anl",exports.repository=u,exports.scripts=p,exports.type=a,exports.version=e;
|