@fast-china/eslint-config 1.0.25 → 1.0.27
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 +15 -9
- package/README.zh.md +15 -9
- package/dist/flat/index.js +290 -300
- package/dist/flat/index.js.map +1 -1
- package/dist/rules/index.d.ts +47 -0
- package/dist/rules/index.js +569 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/v8/index.cjs +36 -37
- package/dist/v8/index.cjs.map +1 -1
- package/package.json +15 -10
- package/dist/v8/index.d.cts +0 -178
package/README.md
CHANGED
|
@@ -89,15 +89,21 @@ Apache Open Source License
|
|
|
89
89
|
|
|
90
90
|
Copyright © 2018-Now xiaoFang
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
The
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
License:
|
|
93
|
+
This Agreement grants any individual or organization that obtains a copy of this software and its related documentation (hereinafter referred to as the "Software").
|
|
94
|
+
Subject to the terms of this Agreement, you have the right to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software:
|
|
95
|
+
1.All copies or major parts of the Software must retain this Copyright Notice and this License Agreement.
|
|
96
|
+
2.The use, copying, modification, or distribution of the Software shall not violate applicable laws or infringe upon the legitimate rights and interests of others.
|
|
97
|
+
3.Modified or derivative works must clearly indicate the original author and the source of the original Software.
|
|
98
|
+
|
|
99
|
+
Special Statement:
|
|
100
|
+
- This Software is provided "as is" without any express or implied warranty of any kind, including but not limited to the warranty of merchantability, fitness for purpose, and non-infringement.
|
|
101
|
+
- In no event shall the author or copyright holder be liable for any direct or indirect loss caused by the use or inability to use this Software.
|
|
102
|
+
- Including but not limited to data loss, business interruption, etc.
|
|
103
|
+
|
|
104
|
+
Disclaimer:
|
|
105
|
+
It is prohibited to use this software to engage in illegal activities such as endangering national security, disrupting social order, or infringing on the legitimate rights and interests of others.
|
|
106
|
+
The author does not assume any responsibility for any legal disputes and liabilities caused by the secondary development of this software.
|
|
101
107
|
```
|
|
102
108
|
|
|
103
109
|
## Disclaimer
|
package/README.zh.md
CHANGED
|
@@ -89,15 +89,21 @@ Apache开源许可证
|
|
|
89
89
|
|
|
90
90
|
版权所有 © 2018-Now 小方
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
许可授权:
|
|
93
|
+
本协议授予任何获得本软件及其相关文档(以下简称“软件”)副本的个人或组织。
|
|
94
|
+
在遵守本协议条款的前提下,享有使用、复制、修改、合并、发布、分发、再许可、销售软件副本的权利:
|
|
95
|
+
1.所有软件副本或主要部分必须保留本版权声明及本许可协议。
|
|
96
|
+
2.软件的使用、复制、修改或分发不得违反适用法律或侵犯他人合法权益。
|
|
97
|
+
3.修改或衍生作品须明确标注原作者及原软件出处。
|
|
98
|
+
|
|
99
|
+
特别声明:
|
|
100
|
+
- 本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
|
|
101
|
+
- 在任何情况下,作者或版权持有人均不对因使用或无法使用本软件导致的任何直接或间接损失的责任。
|
|
102
|
+
- 包括但不限于数据丢失、业务中断等情况。
|
|
103
|
+
|
|
104
|
+
免责条款:
|
|
105
|
+
禁止利用本软件从事危害国家安全、扰乱社会秩序或侵犯他人合法权益等违法活动。
|
|
106
|
+
对于基于本软件二次开发所引发的任何法律纠纷及责任,作者不承担任何责任。
|
|
101
107
|
```
|
|
102
108
|
|
|
103
109
|
## 免责申明
|
package/dist/flat/index.js
CHANGED
|
@@ -45,76 +45,6 @@ var commonRules = {
|
|
|
45
45
|
"prefer-exponentiation-operator": "error"
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
// src/flat/configs/common.ts
|
|
49
|
-
var commonConfigs = tseslint.config([
|
|
50
|
-
{
|
|
51
|
-
name: "@fast-china/common",
|
|
52
|
-
rules: commonRules
|
|
53
|
-
}
|
|
54
|
-
]);
|
|
55
|
-
|
|
56
|
-
// src/flat/configs/ignores.ts
|
|
57
|
-
import eslintConfigFlatGitignore from "eslint-config-flat-gitignore";
|
|
58
|
-
import tseslint2 from "typescript-eslint";
|
|
59
|
-
|
|
60
|
-
// src/constants/index.ts
|
|
61
|
-
var CONST_JS = "**/*.?([cm])js";
|
|
62
|
-
var CONST_JSX = "**/*.?([cm])jsx";
|
|
63
|
-
var CONST_TS = "**/*.?([cm])ts";
|
|
64
|
-
var CONST_TSX = "**/*.?([cm])tsx";
|
|
65
|
-
var CONST_DTS = "**/*.d.ts";
|
|
66
|
-
var CONST_JSON = "**/*.json";
|
|
67
|
-
var CONST_JSONC = "**/*.jsonc";
|
|
68
|
-
var CONST_JSON5 = "**/*.json5";
|
|
69
|
-
var CONST_JSON6 = "**/*.json6";
|
|
70
|
-
var CONST_MD = "**/*.md";
|
|
71
|
-
var CONST_VUE = "**/*.vue";
|
|
72
|
-
var CONST_YAML = "**/*.y?(a)ml";
|
|
73
|
-
var CONST_NODE_MODULES = "**/node_modules";
|
|
74
|
-
var CONST_DIST = "**/dist";
|
|
75
|
-
var CONST_LOCKFILE = ["**/package-lock.json", "**/yarn.lock", "**/pnpm-lock.yaml", "**/bun.lockb"];
|
|
76
|
-
var CONST_PUBLIC = "**/public";
|
|
77
|
-
var CONST_TSCONFIG = ["**/tsconfig.json", "**/tsconfig.*.json"];
|
|
78
|
-
|
|
79
|
-
// src/flat/configs/ignores.ts
|
|
80
|
-
var ignoresConfigs = tseslint2.config([
|
|
81
|
-
{
|
|
82
|
-
name: "@fast-china/ignores/global",
|
|
83
|
-
ignores: [
|
|
84
|
-
CONST_NODE_MODULES,
|
|
85
|
-
CONST_DIST,
|
|
86
|
-
CONST_PUBLIC,
|
|
87
|
-
...CONST_LOCKFILE,
|
|
88
|
-
"**/output",
|
|
89
|
-
"**/coverage",
|
|
90
|
-
"**/temp",
|
|
91
|
-
"**/fixtures",
|
|
92
|
-
"**/.vitepress/cache",
|
|
93
|
-
"**/.nuxt",
|
|
94
|
-
"**/.vercel",
|
|
95
|
-
"**/.changeset",
|
|
96
|
-
"**/.idea",
|
|
97
|
-
"**/.output",
|
|
98
|
-
"**/.vite-inspect",
|
|
99
|
-
"**/.nitro",
|
|
100
|
-
"**/CHANGELOG*.md",
|
|
101
|
-
"**/*.min.*",
|
|
102
|
-
"**/LICENSE*",
|
|
103
|
-
"**/__snapshots__",
|
|
104
|
-
"**/auto-import?(s).d.ts",
|
|
105
|
-
"**/components.d.ts"
|
|
106
|
-
]
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: "@fast-china/ignores/git",
|
|
110
|
-
...eslintConfigFlatGitignore({ strict: false })
|
|
111
|
-
}
|
|
112
|
-
]);
|
|
113
|
-
|
|
114
|
-
// src/flat/configs/import.ts
|
|
115
|
-
import eslintPluginImport from "eslint-plugin-import";
|
|
116
|
-
import tseslint3 from "typescript-eslint";
|
|
117
|
-
|
|
118
48
|
// src/rules/import.ts
|
|
119
49
|
var importUseLodashUnifiedRules = {
|
|
120
50
|
// 限制某些模块导入
|
|
@@ -222,32 +152,6 @@ var importRules = {
|
|
|
222
152
|
"import/named": "off"
|
|
223
153
|
};
|
|
224
154
|
|
|
225
|
-
// src/flat/configs/import.ts
|
|
226
|
-
var importConfigs = tseslint3.config([
|
|
227
|
-
{
|
|
228
|
-
name: "@fast-china/import",
|
|
229
|
-
// 继承某些已有的规则
|
|
230
|
-
extends: [eslintPluginImport.flatConfigs.recommended],
|
|
231
|
-
settings: {
|
|
232
|
-
// 确保 ESLint 和 eslint-plugin-import 能够正确解析项目中的所有相关文件类型
|
|
233
|
-
"import/resolver": {
|
|
234
|
-
node: {
|
|
235
|
-
extensions: [CONST_JS, CONST_JSX, CONST_TS, CONST_TSX, CONST_DTS]
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
rules: {
|
|
240
|
-
...importRules,
|
|
241
|
-
...importUseLodashUnifiedRules
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
]);
|
|
245
|
-
|
|
246
|
-
// src/flat/configs/javascript.ts
|
|
247
|
-
import eslint from "@eslint/js";
|
|
248
|
-
import globals from "globals";
|
|
249
|
-
import tseslint4 from "typescript-eslint";
|
|
250
|
-
|
|
251
155
|
// src/rules/javascript.ts
|
|
252
156
|
var javascriptRules = {
|
|
253
157
|
// JS/TS (http://eslint.cn/docs/rules)
|
|
@@ -342,120 +246,6 @@ var javascriptRules = {
|
|
|
342
246
|
"no-redeclare": "error"
|
|
343
247
|
};
|
|
344
248
|
|
|
345
|
-
// src/flat/configs/javascript.ts
|
|
346
|
-
var javascriptConfigs = tseslint4.config([
|
|
347
|
-
{
|
|
348
|
-
name: "@fast-china/javascript",
|
|
349
|
-
// 继承某些已有的规则
|
|
350
|
-
extends: [eslint.configs.recommended],
|
|
351
|
-
languageOptions: {
|
|
352
|
-
// 允许使用最新的 ECMAScript 语法特性
|
|
353
|
-
ecmaVersion: "latest",
|
|
354
|
-
globals: {
|
|
355
|
-
...globals.browser,
|
|
356
|
-
...globals.es2022,
|
|
357
|
-
...globals.node
|
|
358
|
-
},
|
|
359
|
-
parserOptions: {
|
|
360
|
-
ecmaFeatures: {
|
|
361
|
-
// 允许使用 JSX 语法,适用于 Vue 组件中的 JSX 代码。
|
|
362
|
-
jsx: true
|
|
363
|
-
},
|
|
364
|
-
sourceType: "module"
|
|
365
|
-
}
|
|
366
|
-
},
|
|
367
|
-
rules: javascriptRules
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
name: "@fast-china/javascript/md/js",
|
|
371
|
-
files: ["**/*.md/*.js"],
|
|
372
|
-
rules: {
|
|
373
|
-
// 使用使用控制台
|
|
374
|
-
"no-console": "off",
|
|
375
|
-
// 关闭 - 禁止使用未声明的变量,除非/*global *\/注释中提到
|
|
376
|
-
"no-undef": "off",
|
|
377
|
-
// 关闭 - 禁用对无法解析的模块导入的检查
|
|
378
|
-
"import/no-unresolved": "off",
|
|
379
|
-
// 关闭 - 禁止在文件中重复导入相同的模块
|
|
380
|
-
"import/no-duplicates": "off"
|
|
381
|
-
}
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
name: "@fast-china/javascript/script",
|
|
385
|
-
files: ["**/scripts/*", "**/cli.*"],
|
|
386
|
-
rules: {
|
|
387
|
-
// 使用使用控制台
|
|
388
|
-
"no-console": "off"
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
]);
|
|
392
|
-
|
|
393
|
-
// src/flat/configs/json.ts
|
|
394
|
-
import eslintPluginJsonc from "eslint-plugin-jsonc";
|
|
395
|
-
import jsoncEslintParser from "jsonc-eslint-parser";
|
|
396
|
-
import tseslint5 from "typescript-eslint";
|
|
397
|
-
var jsonConfigs = tseslint5.config([
|
|
398
|
-
{
|
|
399
|
-
name: "@fast-china/json",
|
|
400
|
-
files: [CONST_JSON, CONST_JSONC, CONST_JSON5, CONST_JSON6],
|
|
401
|
-
// 继承某些已有的规则
|
|
402
|
-
extends: [...eslintPluginJsonc.configs["flat/recommended-with-jsonc"]],
|
|
403
|
-
languageOptions: {
|
|
404
|
-
parser: jsoncEslintParser
|
|
405
|
-
},
|
|
406
|
-
plugins: {
|
|
407
|
-
jsonc: eslintPluginJsonc
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
]);
|
|
411
|
-
|
|
412
|
-
// src/flat/configs/markdown.ts
|
|
413
|
-
import eslintPluginMarkdown from "eslint-plugin-markdown";
|
|
414
|
-
import tseslint6 from "typescript-eslint";
|
|
415
|
-
var markdownConfigs = tseslint6.config([
|
|
416
|
-
{
|
|
417
|
-
name: "@fast-china/markdown",
|
|
418
|
-
files: [CONST_MD]
|
|
419
|
-
},
|
|
420
|
-
...eslintPluginMarkdown.configs.recommended.map((config) => ({
|
|
421
|
-
...config,
|
|
422
|
-
name: `@fast-china/${config.name || "markdown/anonymous"}`
|
|
423
|
-
}))
|
|
424
|
-
]);
|
|
425
|
-
|
|
426
|
-
// src/flat/configs/prettier.ts
|
|
427
|
-
import eslintConfigPrettierFlat from "eslint-config-prettier/flat";
|
|
428
|
-
import eslintPluginPrettier from "eslint-plugin-prettier";
|
|
429
|
-
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
|
|
430
|
-
import tseslint7 from "typescript-eslint";
|
|
431
|
-
var prettierConfigs = tseslint7.config([
|
|
432
|
-
{
|
|
433
|
-
name: "@fast-china/prettier",
|
|
434
|
-
// 继承某些已有的规则
|
|
435
|
-
extends: [eslintConfigPrettierFlat, eslintPluginPrettierRecommended],
|
|
436
|
-
plugins: {
|
|
437
|
-
prettier: eslintPluginPrettier
|
|
438
|
-
},
|
|
439
|
-
rules: {
|
|
440
|
-
// 确保 Prettier 错误被 ESLint 捕获
|
|
441
|
-
"prettier/prettier": "error"
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
]);
|
|
445
|
-
|
|
446
|
-
// src/flat/configs/regexp.ts
|
|
447
|
-
import eslintPluginRegexp from "eslint-plugin-regexp";
|
|
448
|
-
import tseslint8 from "typescript-eslint";
|
|
449
|
-
var regexpConfigs = tseslint8.config([
|
|
450
|
-
{
|
|
451
|
-
name: "@fast-china/regexp",
|
|
452
|
-
...eslintPluginRegexp.configs["flat/recommended"]
|
|
453
|
-
}
|
|
454
|
-
]);
|
|
455
|
-
|
|
456
|
-
// src/flat/configs/sort-package.ts
|
|
457
|
-
import tseslint9 from "typescript-eslint";
|
|
458
|
-
|
|
459
249
|
// src/rules/sort-package.ts
|
|
460
250
|
var packageJsonSortRules = {
|
|
461
251
|
"jsonc/sort-array-values": [
|
|
@@ -529,18 +319,6 @@ var packageJsonSortRules = {
|
|
|
529
319
|
]
|
|
530
320
|
};
|
|
531
321
|
|
|
532
|
-
// src/flat/configs/sort-package.ts
|
|
533
|
-
var packageJsonSortConfigs = tseslint9.config([
|
|
534
|
-
{
|
|
535
|
-
name: "@fast-china/sort/package",
|
|
536
|
-
files: ["**/package.json"],
|
|
537
|
-
rules: packageJsonSortRules
|
|
538
|
-
}
|
|
539
|
-
]);
|
|
540
|
-
|
|
541
|
-
// src/flat/configs/sort-tsconfig.ts
|
|
542
|
-
import tseslint10 from "typescript-eslint";
|
|
543
|
-
|
|
544
322
|
// src/rules/sort-tsconfig.ts
|
|
545
323
|
var tsconfigJsonSortRules = {
|
|
546
324
|
"jsonc/sort-keys": [
|
|
@@ -654,18 +432,6 @@ var tsconfigJsonSortRules = {
|
|
|
654
432
|
]
|
|
655
433
|
};
|
|
656
434
|
|
|
657
|
-
// src/flat/configs/sort-tsconfig.ts
|
|
658
|
-
var tsconfigJsonSortConfigs = tseslint10.config([
|
|
659
|
-
{
|
|
660
|
-
name: "@fast-china/sort/tsconfig",
|
|
661
|
-
files: CONST_TSCONFIG,
|
|
662
|
-
rules: tsconfigJsonSortRules
|
|
663
|
-
}
|
|
664
|
-
]);
|
|
665
|
-
|
|
666
|
-
// src/flat/configs/typescript.ts
|
|
667
|
-
import tseslint11 from "typescript-eslint";
|
|
668
|
-
|
|
669
435
|
// src/rules/typescript.ts
|
|
670
436
|
var typescriptRules = {
|
|
671
437
|
// TS (https://typescript-eslint.io/rules)
|
|
@@ -718,72 +484,6 @@ var typescriptRules = {
|
|
|
718
484
|
]
|
|
719
485
|
};
|
|
720
486
|
|
|
721
|
-
// src/flat/configs/typescript.ts
|
|
722
|
-
var typescriptCoreConfigs = tseslint11.config([
|
|
723
|
-
{
|
|
724
|
-
name: "@fast-china/typescript",
|
|
725
|
-
files: [CONST_TS, CONST_TSX],
|
|
726
|
-
// 继承某些已有的规则
|
|
727
|
-
extends: [tseslint11.configs.recommended],
|
|
728
|
-
languageOptions: {
|
|
729
|
-
// 允许使用最新的 ECMAScript 语法特性
|
|
730
|
-
ecmaVersion: "latest",
|
|
731
|
-
parser: tseslint11.parser,
|
|
732
|
-
parserOptions: {
|
|
733
|
-
ecmaFeatures: {
|
|
734
|
-
// 允许使用 TSX 语法,适用于 Vue 组件中的 TSX 代码。
|
|
735
|
-
tsx: true
|
|
736
|
-
},
|
|
737
|
-
sourceType: "module"
|
|
738
|
-
}
|
|
739
|
-
},
|
|
740
|
-
rules: typescriptRules
|
|
741
|
-
}
|
|
742
|
-
]);
|
|
743
|
-
var typescriptConfigs = tseslint11.config([
|
|
744
|
-
...typescriptCoreConfigs,
|
|
745
|
-
{
|
|
746
|
-
name: "@fast-china/typescript/dts",
|
|
747
|
-
files: [CONST_DTS],
|
|
748
|
-
rules: {
|
|
749
|
-
// 关闭 - 一致地使用 TypeScript 类型导入
|
|
750
|
-
"@typescript-eslint/consistent-type-imports": "off"
|
|
751
|
-
}
|
|
752
|
-
},
|
|
753
|
-
{
|
|
754
|
-
name: "@fast-china/typescript/vite",
|
|
755
|
-
files: ["**/vite.config.*"],
|
|
756
|
-
rules: {
|
|
757
|
-
// 关闭 - 要求在 TypeScript 函数和方法中显式地指定返回类型
|
|
758
|
-
"@typescript-eslint/explicit-function-return-type": "off"
|
|
759
|
-
}
|
|
760
|
-
},
|
|
761
|
-
{
|
|
762
|
-
name: "@fast-china/typescript/md/js",
|
|
763
|
-
files: ["**/*.md/*.ts"],
|
|
764
|
-
rules: {
|
|
765
|
-
// 允许定义未使用的变量
|
|
766
|
-
"@typescript-eslint/no-unused-vars": "off"
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
]);
|
|
770
|
-
|
|
771
|
-
// src/flat/configs/vue.ts
|
|
772
|
-
import eslintPluginVue from "eslint-plugin-vue";
|
|
773
|
-
import tseslint12 from "typescript-eslint";
|
|
774
|
-
import vueEslintParser from "vue-eslint-parser";
|
|
775
|
-
|
|
776
|
-
// src/env/index.ts
|
|
777
|
-
import { getPackageInfoSync } from "local-pkg";
|
|
778
|
-
var getVueVersion = () => {
|
|
779
|
-
const pkg = getPackageInfoSync("vue", { paths: [process.cwd()] });
|
|
780
|
-
if (pkg && typeof pkg.version === "string" && !Number.isNaN(+pkg.version[0])) {
|
|
781
|
-
return +pkg.version[0];
|
|
782
|
-
}
|
|
783
|
-
return 3;
|
|
784
|
-
};
|
|
785
|
-
var isVue3 = getVueVersion() === 3;
|
|
786
|
-
|
|
787
487
|
// src/rules/vue.ts
|
|
788
488
|
var vueRules = {
|
|
789
489
|
// vue (https://eslint.vuejs.org/rules)
|
|
@@ -841,6 +541,296 @@ var vueRules = {
|
|
|
841
541
|
]
|
|
842
542
|
};
|
|
843
543
|
|
|
544
|
+
// src/flat/configs/common.ts
|
|
545
|
+
var commonConfigs = tseslint.config([
|
|
546
|
+
{
|
|
547
|
+
name: "@fast-china/common",
|
|
548
|
+
rules: commonRules
|
|
549
|
+
}
|
|
550
|
+
]);
|
|
551
|
+
|
|
552
|
+
// src/flat/configs/ignores.ts
|
|
553
|
+
import eslintConfigFlatGitignore from "eslint-config-flat-gitignore";
|
|
554
|
+
import tseslint2 from "typescript-eslint";
|
|
555
|
+
|
|
556
|
+
// src/constants/index.ts
|
|
557
|
+
var CONST_JS = "**/*.?([cm])js";
|
|
558
|
+
var CONST_JSX = "**/*.?([cm])jsx";
|
|
559
|
+
var CONST_TS = "**/*.?([cm])ts";
|
|
560
|
+
var CONST_TSX = "**/*.?([cm])tsx";
|
|
561
|
+
var CONST_DTS = "**/*.d.ts";
|
|
562
|
+
var CONST_JSON = "**/*.json";
|
|
563
|
+
var CONST_JSONC = "**/*.jsonc";
|
|
564
|
+
var CONST_JSON5 = "**/*.json5";
|
|
565
|
+
var CONST_JSON6 = "**/*.json6";
|
|
566
|
+
var CONST_MD = "**/*.md";
|
|
567
|
+
var CONST_VUE = "**/*.vue";
|
|
568
|
+
var CONST_YAML = "**/*.y?(a)ml";
|
|
569
|
+
var CONST_NODE_MODULES = "**/node_modules";
|
|
570
|
+
var CONST_DIST = "**/dist";
|
|
571
|
+
var CONST_LOCKFILE = ["**/package-lock.json", "**/yarn.lock", "**/pnpm-lock.yaml", "**/bun.lockb"];
|
|
572
|
+
var CONST_PUBLIC = "**/public";
|
|
573
|
+
var CONST_TSCONFIG = ["**/tsconfig.json", "**/tsconfig.*.json"];
|
|
574
|
+
|
|
575
|
+
// src/flat/configs/ignores.ts
|
|
576
|
+
var ignoresConfigs = tseslint2.config([
|
|
577
|
+
{
|
|
578
|
+
name: "@fast-china/ignores/global",
|
|
579
|
+
ignores: [
|
|
580
|
+
CONST_NODE_MODULES,
|
|
581
|
+
CONST_DIST,
|
|
582
|
+
CONST_PUBLIC,
|
|
583
|
+
...CONST_LOCKFILE,
|
|
584
|
+
"**/output",
|
|
585
|
+
"**/coverage",
|
|
586
|
+
"**/temp",
|
|
587
|
+
"**/fixtures",
|
|
588
|
+
"**/.vitepress/cache",
|
|
589
|
+
"**/.nuxt",
|
|
590
|
+
"**/.vercel",
|
|
591
|
+
"**/.changeset",
|
|
592
|
+
"**/.idea",
|
|
593
|
+
"**/.output",
|
|
594
|
+
"**/.vite-inspect",
|
|
595
|
+
"**/.nitro",
|
|
596
|
+
"**/CHANGELOG*.md",
|
|
597
|
+
"**/*.min.*",
|
|
598
|
+
"**/LICENSE*",
|
|
599
|
+
"**/__snapshots__",
|
|
600
|
+
"**/auto-import?(s).d.ts",
|
|
601
|
+
"**/components.d.ts"
|
|
602
|
+
]
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
name: "@fast-china/ignores/git",
|
|
606
|
+
...eslintConfigFlatGitignore({ strict: false })
|
|
607
|
+
}
|
|
608
|
+
]);
|
|
609
|
+
|
|
610
|
+
// src/flat/configs/import.ts
|
|
611
|
+
import eslintPluginImport from "eslint-plugin-import";
|
|
612
|
+
import tseslint3 from "typescript-eslint";
|
|
613
|
+
var importConfigs = tseslint3.config([
|
|
614
|
+
{
|
|
615
|
+
name: "@fast-china/import",
|
|
616
|
+
// 继承某些已有的规则
|
|
617
|
+
extends: [eslintPluginImport.flatConfigs.recommended],
|
|
618
|
+
settings: {
|
|
619
|
+
// 确保 ESLint 和 eslint-plugin-import 能够正确解析项目中的所有相关文件类型
|
|
620
|
+
"import/resolver": {
|
|
621
|
+
node: {
|
|
622
|
+
extensions: [CONST_JS, CONST_JSX, CONST_TS, CONST_TSX, CONST_DTS]
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
rules: {
|
|
627
|
+
...importRules,
|
|
628
|
+
...importUseLodashUnifiedRules
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
]);
|
|
632
|
+
|
|
633
|
+
// src/flat/configs/javascript.ts
|
|
634
|
+
import eslint from "@eslint/js";
|
|
635
|
+
import globals from "globals";
|
|
636
|
+
import tseslint4 from "typescript-eslint";
|
|
637
|
+
var javascriptConfigs = tseslint4.config([
|
|
638
|
+
{
|
|
639
|
+
name: "@fast-china/javascript",
|
|
640
|
+
// 继承某些已有的规则
|
|
641
|
+
extends: [eslint.configs.recommended],
|
|
642
|
+
languageOptions: {
|
|
643
|
+
// 允许使用最新的 ECMAScript 语法特性
|
|
644
|
+
ecmaVersion: "latest",
|
|
645
|
+
globals: {
|
|
646
|
+
...globals.browser,
|
|
647
|
+
...globals.es2022,
|
|
648
|
+
...globals.node
|
|
649
|
+
},
|
|
650
|
+
parserOptions: {
|
|
651
|
+
ecmaFeatures: {
|
|
652
|
+
// 允许使用 JSX 语法,适用于 Vue 组件中的 JSX 代码。
|
|
653
|
+
jsx: true
|
|
654
|
+
},
|
|
655
|
+
sourceType: "module"
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
rules: javascriptRules
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
name: "@fast-china/javascript/md/js",
|
|
662
|
+
files: ["**/*.md/*.js"],
|
|
663
|
+
rules: {
|
|
664
|
+
// 使用使用控制台
|
|
665
|
+
"no-console": "off",
|
|
666
|
+
// 关闭 - 禁止使用未声明的变量,除非/*global *\/注释中提到
|
|
667
|
+
"no-undef": "off",
|
|
668
|
+
// 关闭 - 禁用对无法解析的模块导入的检查
|
|
669
|
+
"import/no-unresolved": "off",
|
|
670
|
+
// 关闭 - 禁止在文件中重复导入相同的模块
|
|
671
|
+
"import/no-duplicates": "off"
|
|
672
|
+
}
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
name: "@fast-china/javascript/script",
|
|
676
|
+
files: ["**/scripts/*", "**/cli.*"],
|
|
677
|
+
rules: {
|
|
678
|
+
// 使用使用控制台
|
|
679
|
+
"no-console": "off"
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
]);
|
|
683
|
+
|
|
684
|
+
// src/flat/configs/json.ts
|
|
685
|
+
import eslintPluginJsonc from "eslint-plugin-jsonc";
|
|
686
|
+
import jsoncEslintParser from "jsonc-eslint-parser";
|
|
687
|
+
import tseslint5 from "typescript-eslint";
|
|
688
|
+
var jsonConfigs = tseslint5.config([
|
|
689
|
+
{
|
|
690
|
+
name: "@fast-china/json",
|
|
691
|
+
files: [CONST_JSON, CONST_JSONC, CONST_JSON5, CONST_JSON6],
|
|
692
|
+
// 继承某些已有的规则
|
|
693
|
+
extends: [...eslintPluginJsonc.configs["flat/recommended-with-jsonc"]],
|
|
694
|
+
languageOptions: {
|
|
695
|
+
parser: jsoncEslintParser
|
|
696
|
+
},
|
|
697
|
+
plugins: {
|
|
698
|
+
jsonc: eslintPluginJsonc
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
]);
|
|
702
|
+
|
|
703
|
+
// src/flat/configs/markdown.ts
|
|
704
|
+
import eslintPluginMarkdown from "eslint-plugin-markdown";
|
|
705
|
+
import tseslint6 from "typescript-eslint";
|
|
706
|
+
var markdownConfigs = tseslint6.config([
|
|
707
|
+
{
|
|
708
|
+
name: "@fast-china/markdown",
|
|
709
|
+
files: [CONST_MD]
|
|
710
|
+
},
|
|
711
|
+
...eslintPluginMarkdown.configs.recommended.map((config) => ({
|
|
712
|
+
...config,
|
|
713
|
+
name: `@fast-china/${config.name || "markdown/anonymous"}`
|
|
714
|
+
}))
|
|
715
|
+
]);
|
|
716
|
+
|
|
717
|
+
// src/flat/configs/prettier.ts
|
|
718
|
+
import eslintConfigPrettierFlat from "eslint-config-prettier/flat";
|
|
719
|
+
import eslintPluginPrettier from "eslint-plugin-prettier";
|
|
720
|
+
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
|
|
721
|
+
import tseslint7 from "typescript-eslint";
|
|
722
|
+
var prettierConfigs = tseslint7.config([
|
|
723
|
+
{
|
|
724
|
+
name: "@fast-china/prettier",
|
|
725
|
+
// 继承某些已有的规则
|
|
726
|
+
extends: [eslintConfigPrettierFlat, eslintPluginPrettierRecommended],
|
|
727
|
+
plugins: {
|
|
728
|
+
prettier: eslintPluginPrettier
|
|
729
|
+
},
|
|
730
|
+
rules: {
|
|
731
|
+
// 确保 Prettier 错误被 ESLint 捕获
|
|
732
|
+
"prettier/prettier": "error"
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
]);
|
|
736
|
+
|
|
737
|
+
// src/flat/configs/regexp.ts
|
|
738
|
+
import eslintPluginRegexp from "eslint-plugin-regexp";
|
|
739
|
+
import tseslint8 from "typescript-eslint";
|
|
740
|
+
var regexpConfigs = tseslint8.config([
|
|
741
|
+
{
|
|
742
|
+
name: "@fast-china/regexp",
|
|
743
|
+
...eslintPluginRegexp.configs["flat/recommended"]
|
|
744
|
+
}
|
|
745
|
+
]);
|
|
746
|
+
|
|
747
|
+
// src/flat/configs/sort-package.ts
|
|
748
|
+
import tseslint9 from "typescript-eslint";
|
|
749
|
+
var packageJsonSortConfigs = tseslint9.config([
|
|
750
|
+
{
|
|
751
|
+
name: "@fast-china/sort/package",
|
|
752
|
+
files: ["**/package.json"],
|
|
753
|
+
rules: packageJsonSortRules
|
|
754
|
+
}
|
|
755
|
+
]);
|
|
756
|
+
|
|
757
|
+
// src/flat/configs/sort-tsconfig.ts
|
|
758
|
+
import tseslint10 from "typescript-eslint";
|
|
759
|
+
var tsconfigJsonSortConfigs = tseslint10.config([
|
|
760
|
+
{
|
|
761
|
+
name: "@fast-china/sort/tsconfig",
|
|
762
|
+
files: CONST_TSCONFIG,
|
|
763
|
+
rules: tsconfigJsonSortRules
|
|
764
|
+
}
|
|
765
|
+
]);
|
|
766
|
+
|
|
767
|
+
// src/flat/configs/typescript.ts
|
|
768
|
+
import tseslint11 from "typescript-eslint";
|
|
769
|
+
var typescriptCoreConfigs = tseslint11.config([
|
|
770
|
+
{
|
|
771
|
+
name: "@fast-china/typescript",
|
|
772
|
+
files: [CONST_TS, CONST_TSX],
|
|
773
|
+
// 继承某些已有的规则
|
|
774
|
+
extends: [tseslint11.configs.recommended],
|
|
775
|
+
languageOptions: {
|
|
776
|
+
// 允许使用最新的 ECMAScript 语法特性
|
|
777
|
+
ecmaVersion: "latest",
|
|
778
|
+
parser: tseslint11.parser,
|
|
779
|
+
parserOptions: {
|
|
780
|
+
ecmaFeatures: {
|
|
781
|
+
// 允许使用 TSX 语法,适用于 Vue 组件中的 TSX 代码。
|
|
782
|
+
tsx: true
|
|
783
|
+
},
|
|
784
|
+
sourceType: "module"
|
|
785
|
+
}
|
|
786
|
+
},
|
|
787
|
+
rules: typescriptRules
|
|
788
|
+
}
|
|
789
|
+
]);
|
|
790
|
+
var typescriptConfigs = tseslint11.config([
|
|
791
|
+
...typescriptCoreConfigs,
|
|
792
|
+
{
|
|
793
|
+
name: "@fast-china/typescript/dts",
|
|
794
|
+
files: [CONST_DTS],
|
|
795
|
+
rules: {
|
|
796
|
+
// 关闭 - 一致地使用 TypeScript 类型导入
|
|
797
|
+
"@typescript-eslint/consistent-type-imports": "off"
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
name: "@fast-china/typescript/vite",
|
|
802
|
+
files: ["**/vite.config.*"],
|
|
803
|
+
rules: {
|
|
804
|
+
// 关闭 - 要求在 TypeScript 函数和方法中显式地指定返回类型
|
|
805
|
+
"@typescript-eslint/explicit-function-return-type": "off"
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
name: "@fast-china/typescript/md/js",
|
|
810
|
+
files: ["**/*.md/*.ts"],
|
|
811
|
+
rules: {
|
|
812
|
+
// 允许定义未使用的变量
|
|
813
|
+
"@typescript-eslint/no-unused-vars": "off"
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
]);
|
|
817
|
+
|
|
818
|
+
// src/flat/configs/vue.ts
|
|
819
|
+
import eslintPluginVue from "eslint-plugin-vue";
|
|
820
|
+
import tseslint12 from "typescript-eslint";
|
|
821
|
+
import vueEslintParser from "vue-eslint-parser";
|
|
822
|
+
|
|
823
|
+
// src/env/index.ts
|
|
824
|
+
import { getPackageInfoSync } from "local-pkg";
|
|
825
|
+
var getVueVersion = () => {
|
|
826
|
+
const pkg = getPackageInfoSync("vue", { paths: [process.cwd()] });
|
|
827
|
+
if (pkg && typeof pkg.version === "string" && !Number.isNaN(+pkg.version[0])) {
|
|
828
|
+
return +pkg.version[0];
|
|
829
|
+
}
|
|
830
|
+
return 3;
|
|
831
|
+
};
|
|
832
|
+
var isVue3 = getVueVersion() === 3;
|
|
833
|
+
|
|
844
834
|
// src/flat/configs/vue.ts
|
|
845
835
|
var vueConfigs = tseslint12.config([
|
|
846
836
|
{
|