@agilebot/eslint-config 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../lib/cli')();
package/lib/cli.js ADDED
@@ -0,0 +1,49 @@
1
+ const fs = require('node:fs');
2
+ const path = require('node:path');
3
+
4
+ module.exports = function (filename) {
5
+ filename = filename || path.join(__dirname, 'index');
6
+
7
+ const isEslint = /^\.eslint.*/;
8
+ const cwd = process.cwd();
9
+ const has = {
10
+ fix: false,
11
+ config: false
12
+ };
13
+
14
+ process.argv.forEach(function (arg) {
15
+ has.fix = has.fix || arg === '--fix';
16
+ has.config = has.config || arg === '-c' || arg === '--config';
17
+ });
18
+
19
+ if (!has.fix) {
20
+ process.argv.splice(2, 0, '--fix');
21
+ }
22
+
23
+ //
24
+ // Only force our config file if there is one not in the current
25
+ // directory AND not specified by the command line.
26
+ //
27
+
28
+ // eslint-disable-next-line n/prefer-promises/fs -- Not available in Node.js 10
29
+ fs.readdir(cwd, function (err, files) {
30
+ if (err) {
31
+ throw err;
32
+ }
33
+
34
+ has.config =
35
+ has.config ||
36
+ files.some(function (file) {
37
+ return isEslint.test(file);
38
+ });
39
+
40
+ if (!has.config) {
41
+ process.argv.splice(2, 0, '-c', require.resolve(filename));
42
+ }
43
+
44
+ const pkg = require.resolve('eslint/package.json');
45
+ const bin = path.join(pkg, '..', 'bin', 'eslint.js');
46
+
47
+ require(bin);
48
+ });
49
+ };
@@ -1,23 +1,23 @@
1
- const { isCI } = require('@agilebot/eslint-utils');
2
-
3
- module.exports = {
4
- plugins: ['eslint-comments', 'file-progress'],
5
- rules: {
6
- // 禁止未使用的eslint-disable注释
7
- 'eslint-comments/no-unused-disable': 'error',
8
- // 禁止无限制的eslint-disable注释
9
- 'eslint-comments/no-unlimited-disable': 'error',
10
- // 禁止重复的eslint-disable注释
11
- 'eslint-comments/no-duplicate-disable': 'error',
12
- // 禁止聚合的eslint-enable注释
13
- 'eslint-comments/no-aggregating-enable': 'error',
14
- // eslint-disable须说明原因
15
- 'eslint-comments/require-description': [
16
- 'error',
17
- {
18
- ignore: ['eslint-env', 'exported', 'global', 'globals']
19
- }
20
- ],
21
- 'file-progress/activate': isCI() ? 'off' : 'warn'
22
- }
23
- };
1
+ const { isCI } = require('@agilebot/eslint-utils');
2
+
3
+ module.exports = {
4
+ plugins: ['eslint-comments', 'file-progress'],
5
+ rules: {
6
+ // 禁止未使用的eslint-disable注释
7
+ 'eslint-comments/no-unused-disable': 'error',
8
+ // 禁止无限制的eslint-disable注释
9
+ 'eslint-comments/no-unlimited-disable': 'error',
10
+ // 禁止重复的eslint-disable注释
11
+ 'eslint-comments/no-duplicate-disable': 'error',
12
+ // 禁止聚合的eslint-enable注释
13
+ 'eslint-comments/no-aggregating-enable': 'error',
14
+ // 须说明原因eslint-disable
15
+ 'eslint-comments/require-description': [
16
+ 'error',
17
+ {
18
+ ignore: ['eslint-env', 'exported', 'global', 'globals']
19
+ }
20
+ ],
21
+ 'file-progress/activate': isCI() ? 'off' : 'warn'
22
+ }
23
+ };
package/lib/configs/ts.js CHANGED
@@ -1,6 +1,7 @@
1
1
  module.exports = {
2
2
  plugins: ['@typescript-eslint', '@stylistic'],
3
3
  rules: {
4
+ '@typescript-eslint/no-unused-vars': 'warn',
4
5
  // 如果没用模板字符串,避免使用反引号
5
6
  '@stylistic/quotes': ['error', 'single', { avoidEscape: true }],
6
7
  // 优先使用interface而不是type
package/lib/index.js CHANGED
@@ -1,51 +1,56 @@
1
- module.exports = {
2
- overrides: [
3
- {
4
- files: [
5
- '*.ts',
6
- '*.tsx',
7
- '*.cts',
8
- '*.mts',
9
- '*.js',
10
- '*.jsx',
11
- '*.cjs',
12
- '*.mjs'
13
- ],
14
- parser: '@typescript-eslint/parser',
15
- extends: [
16
- './configs/env',
17
- './configs/standard',
18
- './configs/ts',
19
- './configs/promise',
20
- './configs/import',
21
- './configs/unicorn',
22
- './configs/react',
23
- './configs/jsdoc',
24
- './configs/lodash',
25
- './configs/eslint',
26
- './configs/deprecation',
27
- './configs/cspell',
28
- './configs/agilebot',
29
- // prettier始终放在最后
30
- './configs/prettier'
31
- ]
32
- },
33
- {
34
- files: ['*.ts', '*.tsx'],
35
- rules: {
36
- '@typescript-eslint/explicit-member-accessibility': 'error'
37
- }
38
- },
39
- {
40
- files: ['*.d.ts'],
41
- rules: {
42
- // .d.ts中支持导入ts文件中的类型
43
- '@typescript-eslint/consistent-type-imports': 'off',
44
- // .d.ts中忽略属性命名规则
45
- '@typescript-eslint/naming-convention': 'off',
46
- // .d.ts中忽略三斜线引用
47
- '@typescript-eslint/triple-slash-reference': 'off'
48
- }
49
- }
50
- ]
51
- };
1
+ module.exports = {
2
+ overrides: [
3
+ {
4
+ files: [
5
+ '*.ts',
6
+ '*.tsx',
7
+ '*.cts',
8
+ '*.mts',
9
+ '*.js',
10
+ '*.jsx',
11
+ '*.cjs',
12
+ '*.mjs'
13
+ ],
14
+ parser: '@typescript-eslint/parser',
15
+ extends: [
16
+ './configs/env',
17
+ './configs/standard',
18
+ './configs/ts',
19
+ './configs/promise',
20
+ './configs/import',
21
+ './configs/unicorn',
22
+ './configs/react',
23
+ './configs/jsdoc',
24
+ './configs/lodash',
25
+ './configs/eslint',
26
+ './configs/deprecation',
27
+ './configs/cspell',
28
+ './configs/agilebot',
29
+ './configs/prettier'
30
+ ]
31
+ },
32
+ {
33
+ files: ['*.ts', '*.tsx'],
34
+ rules: {
35
+ '@typescript-eslint/explicit-member-accessibility': 'error'
36
+ }
37
+ },
38
+ {
39
+ files: ['*.d.ts'],
40
+ rules: {
41
+ // .d.ts中支持导入ts文件中的类型
42
+ '@typescript-eslint/consistent-type-imports': 'off',
43
+ // .d.ts中忽略属性命名规则
44
+ '@typescript-eslint/naming-convention': 'off',
45
+ // .d.ts中忽略三斜线引用
46
+ '@typescript-eslint/triple-slash-reference': 'off'
47
+ }
48
+ },
49
+ {
50
+ files: ['*.js', '*.jsx', '*.cjs'],
51
+ rules: {
52
+ '@typescript-eslint/no-var-requires': 'off'
53
+ }
54
+ }
55
+ ]
56
+ };
package/package.json CHANGED
@@ -1,14 +1,24 @@
1
1
  {
2
2
  "name": "@agilebot/eslint-config",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Agilebot's ESLint config",
5
+ "bin": {
6
+ "eslint-agilebot": "bin/eslint-agilebot"
7
+ },
5
8
  "main": "lib",
6
9
  "license": "MIT",
10
+ "keywords": [
11
+ "eslint",
12
+ "eslint-config"
13
+ ],
7
14
  "repository": {
8
15
  "url": "sh-agilebot/frontend-toolkit",
9
16
  "directory": "packages/eslint-config"
10
17
  },
11
18
  "homepage": "https://github.com/sh-agilebot/frontend-toolkit/tree/master/packages/eslint-config#readme",
19
+ "engines": {
20
+ "node": "^18.0.0"
21
+ },
12
22
  "dependencies": {
13
23
  "@cspell/eslint-plugin": "^8.6.0",
14
24
  "@stylistic/eslint-plugin": "^1.7.0",
@@ -34,16 +44,14 @@
34
44
  "eslint-plugin-unicorn": "^51.0.1",
35
45
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0"
36
46
  },
37
- "devDependencies": {
38
- "@agilebot/eslint-utils": "0.1.1"
39
- },
40
47
  "peerDependencies": {
41
48
  "@agilebot/eslint-plugin": "*",
42
49
  "@agilebot/eslint-utils": "*",
43
- "eslint": "^8.0.0"
50
+ "eslint": "^7.0.0 || ^8.0.0"
44
51
  },
45
52
  "files": [
46
- "lib"
53
+ "lib",
54
+ "bin"
47
55
  ],
48
56
  "scripts": {
49
57
  "lint": "eslint lib --fix"