@stdex/presets-eslint-base 0.0.0-stage → 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.
Files changed (3) hide show
  1. package/index.mjs +121 -0
  2. package/package.json +25 -4
  3. package/README.md +0 -3
package/index.mjs ADDED
@@ -0,0 +1,121 @@
1
+ import eslintJs from '@eslint/js'
2
+ import { defineConfig } from 'eslint/config'
3
+ import eslintConfigPrettier from 'eslint-config-prettier'
4
+ import eslintImportX from 'eslint-plugin-import-x'
5
+ import globals from 'globals'
6
+
7
+ export default defineConfig([
8
+ eslintJs.configs.recommended,
9
+ eslintImportX.flatConfigs.recommended,
10
+ eslintConfigPrettier,
11
+
12
+ {
13
+ name: '@stdex/base',
14
+ rules: {
15
+ // Possible Problems
16
+ 'array-callback-return': 'error',
17
+ 'no-constructor-return': 'error',
18
+ 'no-control-regex': 'off',
19
+ 'no-duplicate-imports': ['error', { includeExports: true }],
20
+ 'no-new-native-nonconstructor': 'error',
21
+ 'no-promise-executor-return': ['error', { allowVoid: true }],
22
+ 'no-self-compare': 'error',
23
+ 'no-template-curly-in-string': 'error',
24
+ 'no-unreachable-loop': 'error',
25
+ 'no-unused-vars': [
26
+ 'error',
27
+ {
28
+ varsIgnorePattern: 'React',
29
+ argsIgnorePattern: '^_',
30
+ destructuredArrayIgnorePattern: '^_',
31
+ caughtErrors: 'none',
32
+ },
33
+ ],
34
+ 'require-atomic-updates': ['error', { allowProperties: true }],
35
+
36
+ // Suggestions
37
+ 'accessor-pairs': 'error',
38
+ 'block-scoped-var': 'error',
39
+ curly: ['error', 'multi-line'],
40
+ 'default-case': 'error',
41
+ 'default-case-last': 'error',
42
+ 'default-param-last': 'off', // 此规则有缺陷:后面有其他可选参数的情况下,有默认值的参数应可以不在最后
43
+ eqeqeq: 'error',
44
+ 'grouped-accessor-pairs': 'error',
45
+ 'guard-for-in': 'error',
46
+ 'no-alert': 'warn',
47
+ 'no-caller': 'error',
48
+ 'no-eq-null': 'error',
49
+ 'no-eval': 'error',
50
+ 'no-extend-native': 'error',
51
+ 'no-extra-bind': 'error',
52
+ 'no-extra-label': 'error',
53
+ 'no-floating-decimal': 'error',
54
+ 'no-implicit-globals': 'error',
55
+ 'no-implied-eval': 'error',
56
+ 'no-label-var': 'error',
57
+ 'no-labels': 'error',
58
+ 'no-lone-blocks': 'error',
59
+ 'no-mixed-operators': 'error',
60
+ 'no-multi-assign': 'error',
61
+ 'no-multi-str': 'error',
62
+ 'no-new-func': 'error',
63
+ 'no-new-wrappers': 'error',
64
+ 'no-octal-escape': 'error',
65
+ 'no-proto': 'error',
66
+ 'no-restricted-imports': 'error',
67
+ 'no-return-assign': 'error',
68
+ 'no-return-await': 'error',
69
+ 'no-script-url': 'error',
70
+ 'no-sequences': 'error',
71
+ 'no-throw-literal': 'error',
72
+ 'no-undef-init': 'error',
73
+ 'no-unneeded-ternary': 'error',
74
+ 'no-unused-expressions': 'error',
75
+ 'no-useless-call': 'error',
76
+ 'no-useless-computed-key': 'error',
77
+ 'no-useless-concat': 'error',
78
+ 'no-useless-constructor': 'error',
79
+ 'no-useless-rename': 'error',
80
+ 'no-useless-return': 'error',
81
+ 'no-var': 'error',
82
+ 'no-void': ['error', { allowAsStatement: true }],
83
+ 'object-shorthand': 'error',
84
+ 'prefer-const': 'error',
85
+ 'prefer-numeric-literals': 'error',
86
+ 'prefer-object-has-own': 'error',
87
+ 'prefer-object-spread': 'error',
88
+ 'prefer-promise-reject-errors': 'error',
89
+ 'prefer-rest-params': 'error',
90
+ 'prefer-spread': 'error',
91
+ 'prefer-template': 'off', // 自行选择要不要用 template string
92
+ 'quote-props': ['error', 'as-needed'],
93
+ radix: 'error',
94
+ 'spaced-comment': ['error', 'always'],
95
+ 'symbol-description': 'error',
96
+ yoda: 'error',
97
+
98
+ // Import
99
+ 'import-x/extensions': ['error', 'ignorePackages', { ts: 'never' }], // TODO: 暂没找到强制要求 .ts 代码里的引用带 `.js` 后缀又不报缺少 `.ts` 后缀的错的办法
100
+ 'import-x/no-useless-path-segments': ['error', { noUselessIndex: false }], // Node.js ES6 Module 里需要把 noUselessIndex 设为 false
101
+ 'import-x/no-named-as-default-member': 'off',
102
+ 'import-x/no-duplicates': ['error', { considerQueryString: true }],
103
+ 'import-x/order': [
104
+ 'error',
105
+ {
106
+ groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object'],
107
+ alphabetize: { order: 'asc' },
108
+ },
109
+ ],
110
+ },
111
+ },
112
+
113
+ // ESLint 配置文件中允许使用 Node.js 环境下的内容
114
+ {
115
+ name: '@stdex/base/config-file-self',
116
+ files: ['**/eslint.config.{js,cjs,mjs}'],
117
+ languageOptions: {
118
+ globals: globals.node,
119
+ },
120
+ },
121
+ ])
package/package.json CHANGED
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "name": "@stdex/presets-eslint-base",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.0",
4
+ "description": "公共 ESLint 配置",
5
+ "homepage": "https://github.com/anjianshi/stdex-packages/presets-eslint/",
6
+ "bugs": {
7
+ "url": "https://github.com/anjianshi/stdex-packages/issues",
8
+ "email": "anjianshi@gmail.com"
9
+ },
10
+ "license": "MIT",
11
+ "author": "anjianshi <anjianshi@gmail.com>",
12
+ "repository": "github:anjianshi/stdex-packages",
13
+ "publishConfig": {
14
+ "registry": "https://registry.npmjs.org/",
15
+ "access": "public"
16
+ },
17
+ "main": "index.mjs",
18
+ "dependencies": {
19
+ "@eslint/js": "^10.0.1",
20
+ "eslint-config-prettier": "^10.1.8",
21
+ "eslint-plugin-import-x": "^4.17.1",
22
+ "globals": "^17.7.0"
23
+ },
24
+ "peerDependencies": {
25
+ "eslint": "^10.6.0"
26
+ }
27
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.