@lsby/eslint-config 0.2.2 → 0.2.4

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.
@@ -30,31 +30,38 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
- \u57FA\u7840ts\u89C4\u5219: () => \u57FA\u7840ts\u89C4\u5219,
34
- \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939: () => \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939
33
+ jsDoc\u5B89\u5168\u6027: () => jsDoc\u5B89\u5168\u6027,
34
+ react\u5B89\u5168\u6027: () => react\u5B89\u5168\u6027,
35
+ ts\u5B89\u5168\u6027: () => ts\u5B89\u5168\u6027,
36
+ \u5E38\u7528\u4F5C\u7528\u57DF: () => \u5E38\u7528\u4F5C\u7528\u57DF,
37
+ \u5E38\u7528\u5FFD\u7565\u57DF: () => \u5E38\u7528\u5FFD\u7565\u57DF,
38
+ \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939: () => \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939,
39
+ \u63A8\u8350\u914D\u7F6E: () => \u63A8\u8350\u914D\u7F6E,
40
+ \u98CE\u683C\u7F8E\u5316: () => \u98CE\u683C\u7F8E\u5316
35
41
  });
36
42
  module.exports = __toCommonJS(src_exports);
37
- var import_eslint_plugin = __toESM(require("@typescript-eslint/eslint-plugin"), 1);
38
- var import_parser = __toESM(require("@typescript-eslint/parser"), 1);
39
43
  var import_eslint_plugin_jsdoc = __toESM(require("eslint-plugin-jsdoc"), 1);
44
+ var import_eslint_plugin_react = __toESM(require("eslint-plugin-react"), 1);
45
+ var import_eslint_plugin_react_hooks = __toESM(require("eslint-plugin-react-hooks"), 1);
40
46
  var import_eslint_plugin_sort_class_members = __toESM(require("eslint-plugin-sort-class-members"), 1);
47
+ var import_typescript_eslint = __toESM(require("typescript-eslint"), 1);
48
+ var \u5E38\u7528\u4F5C\u7528\u57DF = ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "test/**/*.tsx"];
49
+ var \u5E38\u7528\u5FFD\u7565\u57DF = ["node_modules", "dist", "coverage", "out"];
41
50
  var \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939 = {
42
- ignores: ["node_modules", "dist", "coverage", "out"]
51
+ ignores: \u5E38\u7528\u5FFD\u7565\u57DF
43
52
  };
44
- var \u57FA\u7840ts\u89C4\u5219 = {
45
- files: ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "test/**/*.tsx"],
53
+ var ts\u5B89\u5168\u6027 = {
54
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
46
55
  languageOptions: {
47
- parser: import_parser.default,
48
- parserOptions: { project: true }
56
+ parser: import_typescript_eslint.default.parser,
57
+ parserOptions: {
58
+ projectService: true
59
+ }
49
60
  },
50
61
  plugins: {
51
- jsdoc: import_eslint_plugin_jsdoc.default,
52
- "@typescript-eslint": import_eslint_plugin.default.configs,
53
- "sort-class-members": import_eslint_plugin_sort_class_members.default
62
+ "@typescript-eslint": import_typescript_eslint.default.plugin
54
63
  },
55
64
  rules: {
56
- // jsdoc的link必须存在
57
- "jsdoc/no-undefined-types": "error",
58
65
  // 拒绝any
59
66
  "@typescript-eslint/no-unsafe-assignment": "error",
60
67
  // 检查无意义的比较
@@ -71,7 +78,53 @@ var \u57FA\u7840ts\u89C4\u5219 = {
71
78
  argsIgnorePattern: "^_",
72
79
  destructuredArrayIgnorePattern: "^_"
73
80
  }
74
- ],
81
+ ]
82
+ }
83
+ };
84
+ var jsDoc\u5B89\u5168\u6027 = {
85
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
86
+ plugins: {
87
+ jsdoc: import_eslint_plugin_jsdoc.default
88
+ },
89
+ rules: {
90
+ // jsdoc的link必须存在
91
+ "jsdoc/no-undefined-types": "error"
92
+ }
93
+ };
94
+ var react\u5B89\u5168\u6027 = {
95
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
96
+ plugins: {
97
+ react: import_eslint_plugin_react.default,
98
+ "react-hooks": import_eslint_plugin_react_hooks.default
99
+ },
100
+ settings: {
101
+ react: { version: "detect" }
102
+ },
103
+ rules: {
104
+ // 迭代元素必须有key
105
+ "react/jsx-key": "error",
106
+ // 不可以出现重复的属性
107
+ "react/jsx-no-duplicate-props": "error",
108
+ // 不可以用数组的索引做key, 因为react是依据位置决定是否重新渲染的
109
+ "react/no-array-index-key": "error",
110
+ // 不可以在jsx中出现没有转换的html实体
111
+ "react/no-unescaped-entities": "error",
112
+ // 不可以使用非预定的属性
113
+ "react/no-unknown-property": "error",
114
+ // 不应该多传props
115
+ "react/prefer-exact-props": "error",
116
+ // 只在顶层调用hook 和 仅从react函数调用hook
117
+ "react-hooks/rules-of-hooks": "error",
118
+ // hook的依赖必须被正确声明
119
+ "react-hooks/exhaustive-deps": "error"
120
+ }
121
+ };
122
+ var \u98CE\u683C\u7F8E\u5316 = {
123
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
124
+ plugins: {
125
+ "sort-class-members": import_eslint_plugin_sort_class_members.default
126
+ },
127
+ rules: {
75
128
  // 排序类属性
76
129
  "sort-class-members/sort-class-members": [
77
130
  2,
@@ -90,8 +143,22 @@ var \u57FA\u7840ts\u89C4\u5219 = {
90
143
  ]
91
144
  }
92
145
  };
146
+ var \u63A8\u8350\u914D\u7F6E = [
147
+ // ..
148
+ \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939,
149
+ ts\u5B89\u5168\u6027,
150
+ react\u5B89\u5168\u6027,
151
+ jsDoc\u5B89\u5168\u6027,
152
+ \u98CE\u683C\u7F8E\u5316
153
+ ];
93
154
  // Annotate the CommonJS export names for ESM import in node:
94
155
  0 && (module.exports = {
95
- \u57FA\u7840ts\u89C4\u5219,
96
- \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939
156
+ jsDoc\u5B89\u5168\u6027,
157
+ react\u5B89\u5168\u6027,
158
+ ts\u5B89\u5168\u6027,
159
+ \u5E38\u7528\u4F5C\u7528\u57DF,
160
+ \u5E38\u7528\u5FFD\u7565\u57DF,
161
+ \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939,
162
+ \u63A8\u8350\u914D\u7F6E,
163
+ \u98CE\u683C\u7F8E\u5316
97
164
  });
@@ -1,6 +1,12 @@
1
1
  import { Linter } from 'eslint';
2
2
 
3
+ declare var 常用作用域: string[];
4
+ declare var 常用忽略域: string[];
3
5
  declare var 忽略常见文件夹: Linter.Config;
4
- declare var 基础ts规则: Linter.Config;
6
+ declare var ts安全性: Linter.Config;
7
+ declare var jsDoc安全性: Linter.Config;
8
+ declare var react安全性: Linter.Config;
9
+ declare var 风格美化: Linter.Config;
10
+ declare var 推荐配置: Linter.Config[];
5
11
 
6
- export { 基础ts规则, 忽略常见文件夹 };
12
+ export { jsDoc安全性, react安全性, ts安全性, 常用作用域, 常用忽略域, 忽略常见文件夹, 推荐配置, 风格美化 };
@@ -0,0 +1,3 @@
1
+ declare module 'eslint-plugin-sort-class-members' {}
2
+ declare module 'eslint-plugin-react' {}
3
+ declare module 'eslint-plugin-react-hooks' {}
@@ -1,6 +1,12 @@
1
1
  import { Linter } from 'eslint';
2
2
 
3
+ declare var 常用作用域: string[];
4
+ declare var 常用忽略域: string[];
3
5
  declare var 忽略常见文件夹: Linter.Config;
4
- declare var 基础ts规则: Linter.Config;
6
+ declare var ts安全性: Linter.Config;
7
+ declare var jsDoc安全性: Linter.Config;
8
+ declare var react安全性: Linter.Config;
9
+ declare var 风格美化: Linter.Config;
10
+ declare var 推荐配置: Linter.Config[];
5
11
 
6
- export { 基础ts规则, 忽略常见文件夹 };
12
+ export { jsDoc安全性, react安全性, ts安全性, 常用作用域, 常用忽略域, 忽略常见文件夹, 推荐配置, 风格美化 };
package/dist/esm/index.js CHANGED
@@ -1,25 +1,26 @@
1
1
  // src/index.ts
2
- import typescriptEslintPlugin from "@typescript-eslint/eslint-plugin";
3
- import typescriptEslintParser from "@typescript-eslint/parser";
4
2
  import jsdoc from "eslint-plugin-jsdoc";
3
+ import reacteslint from "eslint-plugin-react";
4
+ import reacteslinthooks from "eslint-plugin-react-hooks";
5
5
  import sortClassMembers from "eslint-plugin-sort-class-members";
6
+ import tseslint from "typescript-eslint";
7
+ var \u5E38\u7528\u4F5C\u7528\u57DF = ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "test/**/*.tsx"];
8
+ var \u5E38\u7528\u5FFD\u7565\u57DF = ["node_modules", "dist", "coverage", "out"];
6
9
  var \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939 = {
7
- ignores: ["node_modules", "dist", "coverage", "out"]
10
+ ignores: \u5E38\u7528\u5FFD\u7565\u57DF
8
11
  };
9
- var \u57FA\u7840ts\u89C4\u5219 = {
10
- files: ["src/**/*.ts", "src/**/*.tsx", "test/**/*.ts", "test/**/*.tsx"],
12
+ var ts\u5B89\u5168\u6027 = {
13
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
11
14
  languageOptions: {
12
- parser: typescriptEslintParser,
13
- parserOptions: { project: true }
15
+ parser: tseslint.parser,
16
+ parserOptions: {
17
+ projectService: true
18
+ }
14
19
  },
15
20
  plugins: {
16
- jsdoc,
17
- "@typescript-eslint": typescriptEslintPlugin.configs,
18
- "sort-class-members": sortClassMembers
21
+ "@typescript-eslint": tseslint.plugin
19
22
  },
20
23
  rules: {
21
- // jsdoc的link必须存在
22
- "jsdoc/no-undefined-types": "error",
23
24
  // 拒绝any
24
25
  "@typescript-eslint/no-unsafe-assignment": "error",
25
26
  // 检查无意义的比较
@@ -36,7 +37,53 @@ var \u57FA\u7840ts\u89C4\u5219 = {
36
37
  argsIgnorePattern: "^_",
37
38
  destructuredArrayIgnorePattern: "^_"
38
39
  }
39
- ],
40
+ ]
41
+ }
42
+ };
43
+ var jsDoc\u5B89\u5168\u6027 = {
44
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
45
+ plugins: {
46
+ jsdoc
47
+ },
48
+ rules: {
49
+ // jsdoc的link必须存在
50
+ "jsdoc/no-undefined-types": "error"
51
+ }
52
+ };
53
+ var react\u5B89\u5168\u6027 = {
54
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
55
+ plugins: {
56
+ react: reacteslint,
57
+ "react-hooks": reacteslinthooks
58
+ },
59
+ settings: {
60
+ react: { version: "detect" }
61
+ },
62
+ rules: {
63
+ // 迭代元素必须有key
64
+ "react/jsx-key": "error",
65
+ // 不可以出现重复的属性
66
+ "react/jsx-no-duplicate-props": "error",
67
+ // 不可以用数组的索引做key, 因为react是依据位置决定是否重新渲染的
68
+ "react/no-array-index-key": "error",
69
+ // 不可以在jsx中出现没有转换的html实体
70
+ "react/no-unescaped-entities": "error",
71
+ // 不可以使用非预定的属性
72
+ "react/no-unknown-property": "error",
73
+ // 不应该多传props
74
+ "react/prefer-exact-props": "error",
75
+ // 只在顶层调用hook 和 仅从react函数调用hook
76
+ "react-hooks/rules-of-hooks": "error",
77
+ // hook的依赖必须被正确声明
78
+ "react-hooks/exhaustive-deps": "error"
79
+ }
80
+ };
81
+ var \u98CE\u683C\u7F8E\u5316 = {
82
+ files: \u5E38\u7528\u4F5C\u7528\u57DF,
83
+ plugins: {
84
+ "sort-class-members": sortClassMembers
85
+ },
86
+ rules: {
40
87
  // 排序类属性
41
88
  "sort-class-members/sort-class-members": [
42
89
  2,
@@ -55,7 +102,21 @@ var \u57FA\u7840ts\u89C4\u5219 = {
55
102
  ]
56
103
  }
57
104
  };
105
+ var \u63A8\u8350\u914D\u7F6E = [
106
+ // ..
107
+ \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939,
108
+ ts\u5B89\u5168\u6027,
109
+ react\u5B89\u5168\u6027,
110
+ jsDoc\u5B89\u5168\u6027,
111
+ \u98CE\u683C\u7F8E\u5316
112
+ ];
58
113
  export {
59
- \u57FA\u7840ts\u89C4\u5219,
60
- \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939
114
+ jsDoc\u5B89\u5168\u6027,
115
+ react\u5B89\u5168\u6027,
116
+ ts\u5B89\u5168\u6027,
117
+ \u5E38\u7528\u4F5C\u7528\u57DF,
118
+ \u5E38\u7528\u5FFD\u7565\u57DF,
119
+ \u5FFD\u7565\u5E38\u89C1\u6587\u4EF6\u5939,
120
+ \u63A8\u8350\u914D\u7F6E,
121
+ \u98CE\u683C\u7F8E\u5316
61
122
  };
@@ -0,0 +1,3 @@
1
+ declare module 'eslint-plugin-sort-class-members' {}
2
+ declare module 'eslint-plugin-react' {}
3
+ declare module 'eslint-plugin-react-hooks' {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lsby/eslint-config",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "require": "./dist/cjs/index.cjs",
@@ -20,9 +20,9 @@
20
20
  "prepare": "husky",
21
21
  "pub:public": "npm run check:all && npm run build:all && bumpp && npm publish --access public"
22
22
  },
23
- "dependencies": {},
24
23
  "devDependencies": {
25
24
  "@ianvs/prettier-plugin-sort-imports": "^4.3.1",
25
+ "@types/node": "^22.6.1",
26
26
  "bumpp": "^9.5.2",
27
27
  "husky": "^9.1.6",
28
28
  "prettier-plugin-organize-imports": "^4.1.0",
@@ -30,13 +30,15 @@
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@types/eslint": "^9.6.1",
33
- "@typescript-eslint/eslint-plugin": "^8.6.0",
34
- "@typescript-eslint/parser": "^8.6.0",
35
- "eslint": "^8.56.0",
33
+ "eslint": "^8.57.0",
36
34
  "eslint-config-prettier": "^9.1.0",
37
35
  "eslint-plugin-jsdoc": "^50.2.4",
36
+ "eslint-plugin-react": "^7.36.1",
37
+ "eslint-plugin-react-hooks": "^4.6.2",
38
38
  "eslint-plugin-sort-class-members": "^1.20.0",
39
- "tsup": "^8.3.0"
39
+ "tsup": "^8.3.0",
40
+ "typescript": "<5.6.0",
41
+ "typescript-eslint": "8.7.0"
40
42
  },
41
43
  "packageManager": "pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c"
42
44
  }
@@ -1 +0,0 @@
1
- declare module 'eslint-plugin-sort-class-members' {}
@@ -1 +0,0 @@
1
- declare module 'eslint-plugin-sort-class-members' {}