anl 26.106.1 → 26.107.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.ar.md +300 -37
- package/README.es.md +299 -36
- package/README.fr.md +354 -36
- package/README.jp.md +246 -15
- package/README.md +262 -29
- package/README.ru.md +246 -15
- package/README.zh.md +289 -50
- package/lib/package.json.js +1 -1
- package/lib/src/build-type/core/path.js +1 -1
- package/lib/src/build-type/index.js +1 -1
- package/package.json +1 -1
package/README.jp.md
CHANGED
|
@@ -185,23 +185,32 @@ $ anl type
|
|
|
185
185
|
| saveEnumFolderPath | string | はい | 列挙データファイルの保存パス |
|
|
186
186
|
| importEnumPath | string | はい | 列挙型インポートパス(apps/types/models/\*.ts で enum ファイルを参照するパス) |
|
|
187
187
|
| swaggerJsonUrl | string | いいえ | Swagger JSON ドキュメントのアドレス(`swaggerServers` に移行済み、旧版設定との互換性のため保持)**今後のバージョンでこのフィールドは削除されます** |
|
|
188
|
-
| swaggerServers | object \| Array<object> | いいえ | Swagger サーバー設定。単一サーバーの場合は直接オブジェクトを記入、複数サーバーの場合は配列を使用。各サーバーで `url`、`publicPrefix`、`apiListFileName`、`headers` を設定可能<br />このフィールドは単一 Swagger サーバー設定と複数の Swagger サーバー設定の例に対応します。上にスクロールして確認してください |
|
|
188
|
+
| swaggerServers | object \| Array<object> | いいえ | Swagger サーバー設定。単一サーバーの場合は直接オブジェクトを記入、複数サーバーの場合は配列を使用。各サーバーで `url`、`publicPrefix`、`pathPrefix`、`apiListFileName`、`headers`、`dataLevel`、`parameterSeparator`、`includeInterface`、`excludeInterface` を設定可能<br />このフィールドは単一 Swagger サーバー設定と複数の Swagger サーバー設定の例に対応します。上にスクロールして確認してください |
|
|
189
189
|
| swaggerServers[].url | string | はい | Swagger JSON ドキュメントのアドレス |
|
|
190
190
|
| swaggerServers[].publicPrefix | string | いいえ | URL パス上の共通プレフィックス、例:api/users、api/users/{id}、api が共通プレフィックスです |
|
|
191
191
|
| swaggerServers[].apiListFileName | string | いいえ | API リストファイル名、デフォルトは `index.ts`。複数サーバー使用時、各サーバーのファイル名は一意である必要があります |
|
|
192
|
-
| swaggerServers[].headers | object | いいえ |
|
|
192
|
+
| swaggerServers[].headers | object | いいえ | このサーバーのリクエストヘッダー設定 |
|
|
193
|
+
| swaggerServers[].pathPrefix | string | いいえ | リクエストパスのプレフィックス(モジュール名として理解できます)、各 API リクエストパスの前に自動的に追加されます。<br />例:`pathPrefix: "/forward"` の場合<br />`/publicPrefix/pathPrefix/user` は `/api/forward/user` になります |
|
|
194
|
+
| swaggerServers[].dataLevel | 'data' \| 'serve' \| 'axios' | いいえ | このサーバーのインターフェースレスポンスデータのレベル。設定されていない場合、グローバル `dataLevel` 設定を使用します |
|
|
195
|
+
| swaggerServers[].parameterSeparator | '$' \| '\_' | いいえ | このサーバーの API 名と型名を生成する際に使用される区切り文字。設定されていない場合、グローバル `parameterSeparator` 設定を使用します |
|
|
196
|
+
| swaggerServers[].includeInterface | Array<{path: string, method: string}> | いいえ | このサーバーに含めるインターフェースのリスト。設定されていない場合、グローバル `includeInterface` 設定を使用します |
|
|
197
|
+
| swaggerServers[].excludeInterface | Array<{path: string, method: string}> | いいえ | このサーバーから除外するインターフェースのリスト。設定されていない場合、グローバル `excludeInterface` 設定を使用します |
|
|
193
198
|
| requestMethodsImportPath | string | はい | リクエストメソッドのインポートパス |
|
|
194
|
-
| dataLevel | 'data' \| 'serve' \| 'axios' |
|
|
199
|
+
| dataLevel | 'data' \| 'serve' \| 'axios' | いいえ | グローバルインターフェースレスポンスデータのレベル設定、デフォルト:`'serve'`。各サーバーで個別に上書き可能 |
|
|
195
200
|
| formatting | object | いいえ | コードフォーマット設定 |
|
|
201
|
+
| formatting.indentation | string | いいえ | コードインデント文字、例:`"\t"` または `" "` (2スペース) |
|
|
202
|
+
| formatting.lineEnding | string | いいえ | 改行、例:`"\n"` (LF) または `"\r\n"` (CRLF) |
|
|
196
203
|
| headers | object | いいえ | リクエストヘッダー設定(`swaggerServers` に移行済み、旧版設定との互換性のため保持) |
|
|
197
|
-
| includeInterface | Array<{path: string, method: string}> | いいえ |
|
|
198
|
-
| excludeInterface | Array<{path: string, method: string}> | いいえ |
|
|
199
|
-
| publicPrefix | string | いいえ | URL パス上の共通プレフィックス(`swaggerServers` に移行済み、旧版設定との互換性のため保持)
|
|
200
|
-
|
|
|
204
|
+
| includeInterface | Array<{path: string, method: string}> | いいえ | グローバルに含めるインターフェース:`saveApiListFolderPath` で指定されたインターフェースリストファイルには、このリストに含まれるインターフェースのみが含まれます。`excludeInterface` フィールドと相互排他的です。各サーバーで個別に上書き可能 |
|
|
205
|
+
| excludeInterface | Array<{path: string, method: string}> | いいえ | グローバルに除外するインターフェース:`saveApiListFolderPath` で指定されたインターフェースリストテキストには、このリストに含まれないインターフェースが含まれます。`includeInterface` と相互排他的です。各サーバーで個別に上書き可能 |
|
|
206
|
+
| publicPrefix | string | いいえ | グローバル URL パス上の共通プレフィックス(`swaggerServers` に移行済み、旧版設定との互換性のため保持) |
|
|
207
|
+
| pathPrefix | string | いいえ | グローバルリクエストパスのプレフィックス(各サーバーで個別に上書き可能) |
|
|
208
|
+
| apiListFileName | string | いいえ | グローバル API リストファイル名、デフォルトは `index.ts`(`swaggerServers` に移行済み、旧版設定との互換性のため保持) |
|
|
209
|
+
| enmuConfig | object | はい | 列挙型設定オブジェクト |
|
|
201
210
|
| enmuConfig.erasableSyntaxOnly | boolean | はい | tsconfig.json の `compilerOptions.erasableSyntaxOnly` オプションと一致させます。`true` の場合、enum ではなく const オブジェクトを生成します(型のみの構文)。デフォルト値:`false` |
|
|
202
|
-
|
|
|
203
|
-
| enmuConfig.
|
|
204
|
-
|
|
|
211
|
+
| enmuConfig.varnames | string | いいえ | Swagger schema フィールド名でカスタム列挙メンバー名用。デフォルト値:`enum-varnames`。 |
|
|
212
|
+
| enmuConfig.comment | string | いいえ | Swagger schema フィールド名で列挙メンバーの説明用(コメント生成に使用)。デフォルト値:`enum-descriptions`。 |
|
|
213
|
+
| parameterSeparator | '$' \| '\_' | いいえ | グローバル API 名と型名を生成する際に、パスセグメントとパラメータの間に使用される区切り文字。例えば、`/users/{userId}/posts` に区切り文字 `'_'` を使用すると `users_userId_posts_GET` が生成されます。デフォルト値:`'_'`。各サーバーで個別に上書き可能 |
|
|
205
214
|
|
|
206
215
|
#### 設定項目と生成ファイルの対応関係
|
|
207
216
|
|
|
@@ -255,6 +264,48 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
|
|
|
255
264
|
|
|
256
265
|
### 機能の説明
|
|
257
266
|
|
|
267
|
+
#### 設定の優先順位
|
|
268
|
+
|
|
269
|
+
ツールはグローバル設定とサーバーレベル設定をサポートし、以下の優先順位ルールに従います:
|
|
270
|
+
|
|
271
|
+
**優先順位:サーバーレベル設定 > グローバル設定 > デフォルト値**
|
|
272
|
+
|
|
273
|
+
以下の設定項目はサーバーレベルでグローバル設定を上書きすることをサポートしています:
|
|
274
|
+
|
|
275
|
+
- `dataLevel`: インターフェースレスポンスデータのレベル
|
|
276
|
+
- `parameterSeparator`: API 名と型名の区切り文字
|
|
277
|
+
- `includeInterface`: 含めるインターフェースのリスト
|
|
278
|
+
- `excludeInterface`: 除外するインターフェースのリスト
|
|
279
|
+
- `pathPrefix`: リクエストパスのプレフィックス
|
|
280
|
+
- `publicPrefix`: URL の共通プレフィックス
|
|
281
|
+
- `headers`: リクエストヘッダー設定
|
|
282
|
+
|
|
283
|
+
**例:**
|
|
284
|
+
|
|
285
|
+
```json
|
|
286
|
+
{
|
|
287
|
+
"dataLevel": "serve",
|
|
288
|
+
"parameterSeparator": "_",
|
|
289
|
+
"swaggerServers": [
|
|
290
|
+
{
|
|
291
|
+
"url": "http://api1.example.com/swagger.json",
|
|
292
|
+
"dataLevel": "data",
|
|
293
|
+
"apiListFileName": "api1.ts"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"url": "http://api2.example.com/swagger.json",
|
|
297
|
+
"apiListFileName": "api2.ts"
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
上記の設定では:
|
|
304
|
+
|
|
305
|
+
- `api1.ts` は `dataLevel: "data"` を使用(サーバーレベル設定)
|
|
306
|
+
- `api2.ts` は `dataLevel: "serve"` を使用(グローバル設定)
|
|
307
|
+
- 両サーバーとも `parameterSeparator: "_"` を使用(グローバル設定)
|
|
308
|
+
|
|
258
309
|
#### 型解析
|
|
259
310
|
|
|
260
311
|
- すべての OpenAPI 3.0 仕様のデータ型をサポート
|
|
@@ -305,6 +356,73 @@ interface User {
|
|
|
305
356
|
}
|
|
306
357
|
```
|
|
307
358
|
|
|
359
|
+
#### データレベル設定(dataLevel)
|
|
360
|
+
|
|
361
|
+
`dataLevel` は、インターフェースレスポンスデータの抽出レベルを設定するために使用され、3つのオプションをサポートしています:
|
|
362
|
+
|
|
363
|
+
1. **`'serve'`(デフォルト)**:サーバーレスポンスから `data` フィールドを抽出
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
// サーバーが返す: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
367
|
+
// 関数が返す: { id: 1, name: 'user' }
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
2. **`'data'`**:`data.data` フィールドを抽出(ネストされたデータのシナリオに適用)
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
// サーバーが返す: { data: { code: 200, data: { id: 1, name: 'user' } } }
|
|
374
|
+
// 関数が返す: { id: 1, name: 'user' }
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
3. **`'axios'`**:完全な axios レスポンスオブジェクトを返す
|
|
378
|
+
```typescript
|
|
379
|
+
// サーバーが返す: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
380
|
+
// 関数が返す: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**設定例:**
|
|
384
|
+
|
|
385
|
+
```json
|
|
386
|
+
{
|
|
387
|
+
"dataLevel": "serve",
|
|
388
|
+
"swaggerServers": [
|
|
389
|
+
{
|
|
390
|
+
"url": "http://api1.example.com/swagger.json",
|
|
391
|
+
"dataLevel": "data"
|
|
392
|
+
}
|
|
393
|
+
]
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
> **注意**:サーバーレベルの `dataLevel` 設定はグローバル設定を上書きします。
|
|
398
|
+
|
|
399
|
+
#### コードフォーマット
|
|
400
|
+
|
|
401
|
+
ツールはカスタムコードフォーマットオプションをサポートし、`formatting` 設定で制御します:
|
|
402
|
+
|
|
403
|
+
**設定例:**
|
|
404
|
+
|
|
405
|
+
```json
|
|
406
|
+
{
|
|
407
|
+
"formatting": {
|
|
408
|
+
"indentation": "\t",
|
|
409
|
+
"lineEnding": "\n"
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**設定説明:**
|
|
415
|
+
|
|
416
|
+
- `indentation`: コードインデント文字
|
|
417
|
+
- `"\t"`: Tab インデントを使用(デフォルト)
|
|
418
|
+
- `" "`: 2 スペースのインデントを使用
|
|
419
|
+
- `" "`: 4 スペースのインデントを使用
|
|
420
|
+
- `lineEnding`: 改行タイプ
|
|
421
|
+
- `"\n"`: LF(Linux/macOS スタイル、推奨)
|
|
422
|
+
- `"\r\n"`: CRLF(Windows スタイル)
|
|
423
|
+
|
|
424
|
+
**注意:** プロジェクトに Prettier が設定されている場合、生成されたコードは自動的に Prettier でフォーマットされ、`formatting` 設定は Prettier によって上書きされる可能性があります。
|
|
425
|
+
|
|
308
426
|
#### ファイルアップロード
|
|
309
427
|
|
|
310
428
|
ファイルアップロード型が検出されると、対応するリクエストヘッダーが自動的に追加されます:
|
|
@@ -372,6 +490,51 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
372
490
|
- 後続のサーバーの API はそれぞれの `apiListFileName` ファイルに追加されます
|
|
373
491
|
- 型定義と列挙型は統一されたフォルダにマージされ、重複を避けます
|
|
374
492
|
|
|
493
|
+
**サーバーレベル設定:**
|
|
494
|
+
|
|
495
|
+
各サーバーは以下のオプションを独立して設定することをサポートしています。設定されていない場合、グローバル設定が使用されます:
|
|
496
|
+
|
|
497
|
+
- `dataLevel` - インターフェースレスポンスデータのレベル
|
|
498
|
+
- `parameterSeparator` - API 名と型名の区切り文字
|
|
499
|
+
- `includeInterface` - 含めるインターフェースのリスト
|
|
500
|
+
- `excludeInterface` - 除外するインターフェースのリスト
|
|
501
|
+
- `pathPrefix` - リクエストパスのプレフィックス
|
|
502
|
+
|
|
503
|
+
#### パスプレフィックス(pathPrefix)
|
|
504
|
+
|
|
505
|
+
`pathPrefix` はすべての API リクエストパスの前にプレフィックスを自動的に追加するために使用され、以下のシナリオで特に役立ちます:
|
|
506
|
+
|
|
507
|
+
1. **リバースプロキシシナリオ**:バックエンドサービスがリバースプロキシ経由で転送される場合
|
|
508
|
+
2. **API ゲートウェイ**:パスに統一的にゲートウェイプレフィックスを追加
|
|
509
|
+
3. **マルチ環境設定**:異なる環境で異なるパスプレフィックスを使用
|
|
510
|
+
|
|
511
|
+
**使用例:**
|
|
512
|
+
|
|
513
|
+
```json
|
|
514
|
+
{
|
|
515
|
+
"swaggerServers": [
|
|
516
|
+
{
|
|
517
|
+
"url": "http://api.example.com/swagger.json",
|
|
518
|
+
"pathPrefix": "/forward",
|
|
519
|
+
"apiListFileName": "api.ts"
|
|
520
|
+
}
|
|
521
|
+
]
|
|
522
|
+
}
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**効果:**
|
|
526
|
+
|
|
527
|
+
Swagger で定義されたパス `/api/user/list` は次のように生成されます:
|
|
528
|
+
|
|
529
|
+
```typescript
|
|
530
|
+
export const apiUserListGet = (params: ApiUserList_GET.Query) => GET<ApiUserList_GET.Response>('/forward/api/user/list', params);
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
**publicPrefix との違い:**
|
|
534
|
+
|
|
535
|
+
- `publicPrefix`: インターフェースパスからプレフィックスを削除し、生成される関数名にのみ影響します
|
|
536
|
+
- `pathPrefix`: 実際のリクエストパスの前にプレフィックスを追加し、実行時のリクエスト URL に影響します
|
|
537
|
+
|
|
375
538
|
**設定例:**
|
|
376
539
|
|
|
377
540
|
```json
|
|
@@ -381,14 +544,24 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
381
544
|
"url": "http://api1.example.com/swagger.json",
|
|
382
545
|
"apiListFileName": "api1.ts",
|
|
383
546
|
"publicPrefix": "/api/v1",
|
|
547
|
+
"pathPrefix": "/forward",
|
|
548
|
+
"dataLevel": "serve",
|
|
549
|
+
"parameterSeparator": "_",
|
|
384
550
|
"headers": {
|
|
385
551
|
"Authorization": "Bearer token1"
|
|
386
|
-
}
|
|
552
|
+
},
|
|
553
|
+
"includeInterface": [
|
|
554
|
+
{
|
|
555
|
+
"path": "/api/v1/users",
|
|
556
|
+
"method": "get"
|
|
557
|
+
}
|
|
558
|
+
]
|
|
387
559
|
},
|
|
388
560
|
{
|
|
389
561
|
"url": "http://api2.example.com/swagger.json",
|
|
390
562
|
"apiListFileName": "api2.ts",
|
|
391
563
|
"publicPrefix": "/api/v2",
|
|
564
|
+
"dataLevel": "data",
|
|
392
565
|
"headers": {
|
|
393
566
|
"Authorization": "Bearer token2"
|
|
394
567
|
}
|
|
@@ -422,21 +595,79 @@ export const uploadFile = (params: UploadFile.Body) =>
|
|
|
422
595
|
|
|
423
596
|
1. Swagger JSON ドキュメントのアドレスにアクセスできることを確認してください
|
|
424
597
|
2. 設定ファイル内のパスは、プロジェクトルートディレクトリからの相対パスである必要があります
|
|
425
|
-
3.
|
|
598
|
+
3. 生成されたファイルは、既存の同名ファイルを上書きします(ただし、`config.ts`、`error-message.ts`、`fetch.ts`、`api-type.d.ts` は既に存在する場合は上書きされません)
|
|
426
599
|
4. 生成されたファイルをバージョン管理に含めることをお勧めします
|
|
427
600
|
5. 複数の Swagger サーバーを使用する場合、各サーバーの `apiListFileName` が一意であることを確認し、ファイルの上書きを避けてください
|
|
428
601
|
6. 複数のサーバー設定を使用する場合、型定義と列挙型はマージされます。異なるサーバーに同じ名前の型がある場合、競合が発生する可能性があります
|
|
602
|
+
7. サーバーレベルの設定(`dataLevel`、`parameterSeparator`、`includeInterface`、`excludeInterface`、`pathPrefix`)はグローバル設定を上書きします
|
|
603
|
+
8. `includeInterface` と `excludeInterface` は同時に設定できません。両方が設定された場合、`includeInterface` が優先されます
|
|
429
604
|
|
|
430
605
|
### よくある質問
|
|
431
606
|
|
|
432
|
-
1.
|
|
607
|
+
1. **生成された型ファイルのフォーマットが失敗する**
|
|
433
608
|
- prettier がインストールされているか確認してください
|
|
434
609
|
- プロジェクトルートディレクトリに prettier 設定ファイルがあるか確認してください
|
|
610
|
+
- `formatting` 設定が正しいか確認してください
|
|
435
611
|
|
|
436
|
-
2.
|
|
437
|
-
- requestMethodsImportPath 設定が正しいか確認してください
|
|
612
|
+
2. **リクエスト関数のインポートパスエラー**
|
|
613
|
+
- `requestMethodsImportPath` 設定が正しいか確認してください
|
|
438
614
|
- リクエストメソッドファイルが存在するか確認してください
|
|
439
615
|
|
|
616
|
+
3. **いつ `pathPrefix` を使用しますか?**
|
|
617
|
+
- API がリバースプロキシまたはゲートウェイ経由でアクセスされる必要がある場合
|
|
618
|
+
- 例:Swagger では `/api/user` と定義されていますが、実際のリクエストは `/gateway/api/user` である必要があります
|
|
619
|
+
- `pathPrefix: "/gateway"` を設定することで実現できます
|
|
620
|
+
|
|
621
|
+
4. **`publicPrefix` と `pathPrefix` の違いは何ですか?**
|
|
622
|
+
- `publicPrefix`: インターフェースパスからプレフィックスを削除し、生成される関数名にのみ影響します
|
|
623
|
+
- 例:`/api/user/list` から `/api` を削除すると、関数名は `userListGet` になります
|
|
624
|
+
- `pathPrefix`: リクエストパスの前にプレフィックスを追加し、実際のリクエスト URL に影響します
|
|
625
|
+
- 例:`/api/user/list` に `/forward` を追加すると、リクエスト URL は `/forward/api/user/list` になります
|
|
626
|
+
|
|
627
|
+
5. **複数のサーバーで異なる `dataLevel` を設定するには?**
|
|
628
|
+
|
|
629
|
+
```json
|
|
630
|
+
{
|
|
631
|
+
"dataLevel": "serve",
|
|
632
|
+
"swaggerServers": [
|
|
633
|
+
{
|
|
634
|
+
"url": "http://old-api.com/swagger.json",
|
|
635
|
+
"dataLevel": "axios",
|
|
636
|
+
"apiListFileName": "old-api.ts"
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"url": "http://new-api.com/swagger.json",
|
|
640
|
+
"apiListFileName": "new-api.ts"
|
|
641
|
+
}
|
|
642
|
+
]
|
|
643
|
+
}
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
- `old-api.ts` は `dataLevel: "axios"` を使用
|
|
647
|
+
- `new-api.ts` はグローバルの `dataLevel: "serve"` を使用
|
|
648
|
+
|
|
649
|
+
6. **特定のインターフェースのみを生成するには?**
|
|
650
|
+
- `includeInterface` 設定を使用:
|
|
651
|
+
```json
|
|
652
|
+
{
|
|
653
|
+
"swaggerServers": [
|
|
654
|
+
{
|
|
655
|
+
"url": "http://api.com/swagger.json",
|
|
656
|
+
"includeInterface": [
|
|
657
|
+
{ "path": "/api/user", "method": "get" },
|
|
658
|
+
{ "path": "/api/user/{id}", "method": "post" }
|
|
659
|
+
]
|
|
660
|
+
}
|
|
661
|
+
]
|
|
662
|
+
}
|
|
663
|
+
```
|
|
664
|
+
- または `excludeInterface` を使用して不要なインターフェースを除外
|
|
665
|
+
|
|
666
|
+
7. **生成されたファイルが上書きされた場合はどうすればよいですか?**
|
|
667
|
+
- `config.ts`、`error-message.ts`、`fetch.ts`、`api-type.d.ts` などのファイルは、存在しない場合にのみ生成されます
|
|
668
|
+
- API リストファイルと型ファイルは毎回再生成されます
|
|
669
|
+
- 生成されたファイルをバージョン管理に追加して、変更を追跡しやすくすることをお勧めします
|
|
670
|
+
|
|
440
671
|
# `anl lint` コマンド使用方法
|
|
441
672
|
|
|
442
673
|
> フロントエンドプロジェクトの各種 lint ツールをワンクリックで設定する機能を提供します:
|