@cherepanov.pavel/shareable-config 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.
- package/.editorconfig +11 -0
- package/.editorconfig-get.js +19 -0
- package/.get-all.js +29 -0
- package/.gitattributes +1 -0
- package/.gitattributes-get.js +19 -0
- package/.gitignore +15 -0
- package/.gitignore-get.js +47 -0
- package/.vscode/.code-snippets-get.js +49 -0
- package/.vscode/all-files.code-snippets +18 -0
- package/.vscode/extensions.json +25 -0
- package/.vscode/extensions.json-get.js +43 -0
- package/.vscode/settings.json +42 -0
- package/.vscode/settings.json-get.js +43 -0
- package/.vscode/vue.code-snippets +28 -0
- package/README.md +10 -0
- package/env.json5.set.js +14 -0
- package/jsconfig.json +9 -0
- package/package.json +54 -0
- package/tools/eslint-config/configs/global.js +26 -0
- package/tools/eslint-config/configs/javascript.js +21 -0
- package/tools/eslint-config/configs/typescript.js +28 -0
- package/tools/eslint-config/configs/vue.js +43 -0
- package/tools/eslint-config/index.js +4 -0
- package/tools/eslint-config/rules/constants.js +15 -0
- package/tools/eslint-config/rules/javascript/index.js +7 -0
- package/tools/eslint-config/rules/javascript/possible-problems.js +62 -0
- package/tools/eslint-config/rules/javascript/suggestions.js +254 -0
- package/tools/eslint-config/rules/severity.js +3 -0
- package/tools/eslint-config/rules/stylistic/index.js +2 -0
- package/tools/eslint-config/rules/stylistic/jsFormatting.js +172 -0
- package/tools/eslint-config/rules/stylistic/tsFormatting.js +9 -0
- package/tools/eslint-config/rules/typescript/common.js +130 -0
- package/tools/eslint-config/rules/typescript/compatibility.js +24 -0
- package/tools/eslint-config/rules/typescript/extension.js +52 -0
- package/tools/eslint-config/rules/typescript/index.js +9 -0
- package/tools/eslint-config/rules/vue/base.js +6 -0
- package/tools/eslint-config/rules/vue/extension.js +58 -0
- package/tools/eslint-config/rules/vue/formatting.js +41 -0
- package/tools/eslint-config/rules/vue/index.js +13 -0
- package/tools/eslint-config/rules/vue/possibleProblems.js +113 -0
- package/tools/eslint-config/rules/vue/suggestions.js +83 -0
- package/tools/stylelint-config/config.js +29 -0
- package/tools/stylelint-config/rules/base.js +26 -0
- package/tools/stylelint-config/rules/conflicts.js +7 -0
- package/tools/stylelint-config/rules/order.js +42 -0
- package/tools/stylelint-config/rules/property-groups.js +404 -0
- package/tools/stylelint-config/rules/scss.js +8 -0
- package/tools/stylelint-config/rules/stylistic.js +124 -0
- package/utils/communication.js +33 -0
- package/utils/copy-with-override.js +43 -0
- package/utils/env.js +16 -0
- package/utils/file-header.js +16 -0
- package/utils/file.js +64 -0
- package/utils/merge.js +180 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { OFF } from '../severity.js';
|
|
2
|
+
|
|
3
|
+
import { suggestionRules } from '../javascript/suggestions.js';
|
|
4
|
+
import { possibleProblemRules } from '../javascript/possible-problems.js';
|
|
5
|
+
|
|
6
|
+
export const extensionsRules = {
|
|
7
|
+
'class-methods-use-this': OFF,
|
|
8
|
+
'@typescript-eslint/class-methods-use-this': suggestionRules['class-methods-use-this'],
|
|
9
|
+
'default-param-last': OFF,
|
|
10
|
+
'@typescript-eslint/default-param-last': suggestionRules['default-param-last'],
|
|
11
|
+
'dot-notation': OFF,
|
|
12
|
+
'@typescript-eslint/dot-notation': suggestionRules['dot-notation'],
|
|
13
|
+
'init-declarations': OFF,
|
|
14
|
+
'@typescript-eslint/init-declarations': suggestionRules['init-declarations'],
|
|
15
|
+
'no-array-constructor': OFF,
|
|
16
|
+
'@typescript-eslint/no-array-constructor': suggestionRules['no-array-constructor'],
|
|
17
|
+
'no-empty-function': OFF,
|
|
18
|
+
'@typescript-eslint/no-empty-function': suggestionRules['no-empty-function'],
|
|
19
|
+
'no-implied-eval': OFF,
|
|
20
|
+
'@typescript-eslint/no-implied-eval': suggestionRules['no-implied-eval'],
|
|
21
|
+
'no-invalid-this': OFF,
|
|
22
|
+
'@typescript-eslint/no-invalid-this': suggestionRules['no-invalid-this'],
|
|
23
|
+
'no-loop-func': OFF,
|
|
24
|
+
'@typescript-eslint/no-loop-func': suggestionRules['no-loop-func'],
|
|
25
|
+
'no-magic-numbers': OFF,
|
|
26
|
+
'@typescript-eslint/no-magic-numbers': suggestionRules['no-magic-numbers'],
|
|
27
|
+
'no-redeclare': OFF,
|
|
28
|
+
'@typescript-eslint/no-redeclare': suggestionRules['no-redeclare'],
|
|
29
|
+
'no-restricted-imports': OFF,
|
|
30
|
+
'@typescript-eslint/no-restricted-imports': suggestionRules['no-restricted-imports'],
|
|
31
|
+
'no-shadow': OFF,
|
|
32
|
+
'@typescript-eslint/no-shadow': suggestionRules['no-shadow'],
|
|
33
|
+
'no-throw-literal': OFF,
|
|
34
|
+
// '@typescript-eslint/no-throw-literal': suggestionRules['no-throw-literal'],
|
|
35
|
+
'no-unused-expressions': OFF,
|
|
36
|
+
'@typescript-eslint/no-unused-expressions': suggestionRules['no-unused-expressions'],
|
|
37
|
+
'no-useless-constructor': OFF,
|
|
38
|
+
'@typescript-eslint/no-useless-constructor': suggestionRules['no-useless-constructor'],
|
|
39
|
+
'require-await': OFF,
|
|
40
|
+
'@typescript-eslint/require-await': suggestionRules['require-await'],
|
|
41
|
+
'no-return-await': OFF,
|
|
42
|
+
'@typescript-eslint/return-await': suggestionRules['no-return-await'],
|
|
43
|
+
|
|
44
|
+
'no-dupe-class-members': OFF,
|
|
45
|
+
'@typescript-eslint/no-dupe-class-members': possibleProblemRules['no-dupe-class-members'],
|
|
46
|
+
'no-loss-of-precision': OFF,
|
|
47
|
+
'@typescript-eslint/no-loss-of-precision': possibleProblemRules['no-loss-of-precision'],
|
|
48
|
+
'no-unused-vars': OFF,
|
|
49
|
+
'@typescript-eslint/no-unused-vars': possibleProblemRules['no-unused-vars'],
|
|
50
|
+
'no-use-before-define': OFF,
|
|
51
|
+
'@typescript-eslint/no-use-before-define': possibleProblemRules['no-use-before-define'],
|
|
52
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ERROR, OFF } from '../severity.js';
|
|
2
|
+
import { MAX_LEN } from '../constants.js';
|
|
3
|
+
|
|
4
|
+
import { possibleProblemRules } from '../javascript/possible-problems.js';
|
|
5
|
+
import { suggestionRules } from '../javascript/suggestions.js';
|
|
6
|
+
|
|
7
|
+
import { jsFormatting } from '../stylistic/index.js';
|
|
8
|
+
|
|
9
|
+
export const extensionRules = {
|
|
10
|
+
'vue/no-constant-condition': possibleProblemRules['no-constant-condition'],
|
|
11
|
+
'vue/no-empty-pattern': possibleProblemRules['no-empty-pattern'],
|
|
12
|
+
'vue/no-irregular-whitespace': possibleProblemRules['no-irregular-whitespace'],
|
|
13
|
+
'vue/no-loss-of-precision': possibleProblemRules['no-loss-of-precision'],
|
|
14
|
+
'vue/no-sparse-arrays': possibleProblemRules['no-sparse-arrays'],
|
|
15
|
+
|
|
16
|
+
'vue/camelcase': suggestionRules.camelcase,
|
|
17
|
+
'vue/dot-notation': suggestionRules['dot-notation'],
|
|
18
|
+
'vue/eqeqeq': suggestionRules.eqeqeq,
|
|
19
|
+
'vue/no-console': suggestionRules['no-console'],
|
|
20
|
+
'vue/no-restricted-syntax': suggestionRules['no-restricted-syntax'],
|
|
21
|
+
'vue/no-useless-concat': suggestionRules['no-useless-concat'],
|
|
22
|
+
'vue/object-shorthand': suggestionRules['object-shorthand'],
|
|
23
|
+
'vue/prefer-template': suggestionRules['prefer-template'],
|
|
24
|
+
|
|
25
|
+
'vue/array-bracket-newline': jsFormatting['@stylistic/array-bracket-newline'],
|
|
26
|
+
'vue/array-bracket-spacing': jsFormatting['@stylistic/array-bracket-spacing'],
|
|
27
|
+
'vue/array-element-newline': jsFormatting['@stylistic/array-element-newline'],
|
|
28
|
+
'vue/arrow-spacing': jsFormatting['@stylistic/arrow-spacing'],
|
|
29
|
+
'vue/block-spacing': jsFormatting['@stylistic/block-spacing'],
|
|
30
|
+
'vue/brace-style': jsFormatting['@stylistic/brace-style'],
|
|
31
|
+
'vue/comma-dangle': jsFormatting['@stylistic/comma-dangle'],
|
|
32
|
+
'vue/comma-spacing': jsFormatting['@stylistic/comma-spacing'],
|
|
33
|
+
'vue/comma-style': jsFormatting['@stylistic/comma-style'],
|
|
34
|
+
'vue/dot-location': jsFormatting['@stylistic/dot-location'],
|
|
35
|
+
'vue/func-call-spacing': jsFormatting['@stylistic/function-call-spacing'],
|
|
36
|
+
'vue/key-spacing': jsFormatting['@stylistic/key-spacing'],
|
|
37
|
+
'vue/keyword-spacing': jsFormatting['@stylistic/keyword-spacing'],
|
|
38
|
+
'vue/multiline-ternary': jsFormatting['@stylistic/multiline-ternary'],
|
|
39
|
+
'vue/no-extra-parens': jsFormatting['@stylistic/no-extra-parens'],
|
|
40
|
+
'vue/object-curly-newline': jsFormatting['@stylistic/object-curly-newline'],
|
|
41
|
+
'vue/object-curly-spacing': jsFormatting['@stylistic/object-curly-spacing'],
|
|
42
|
+
'vue/object-property-newline': jsFormatting['@stylistic/object-property-newline'],
|
|
43
|
+
'vue/operator-linebreak': jsFormatting['@stylistic/operator-linebreak'],
|
|
44
|
+
'vue/quote-props': jsFormatting['@stylistic/quote-props'],
|
|
45
|
+
'vue/space-in-parens': jsFormatting['@stylistic/space-in-parens'],
|
|
46
|
+
'vue/space-infix-ops': jsFormatting['@stylistic/space-infix-ops'],
|
|
47
|
+
'vue/space-unary-ops': jsFormatting['@stylistic/space-unary-ops'],
|
|
48
|
+
'vue/template-curly-spacing': jsFormatting['@stylistic/template-curly-spacing'],
|
|
49
|
+
|
|
50
|
+
'@stylistic/max-len': [OFF],
|
|
51
|
+
'max-len': [OFF],
|
|
52
|
+
'vue/max-len': [ERROR, {
|
|
53
|
+
...MAX_LEN,
|
|
54
|
+
|
|
55
|
+
ignoreHTMLAttributeValues: true,
|
|
56
|
+
ignoreHTMLTextContents: true,
|
|
57
|
+
}],
|
|
58
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { INDENT_SIZE } from '../constants.js';
|
|
2
|
+
import { ERROR, OFF } from '../severity.js';
|
|
3
|
+
|
|
4
|
+
export const formattingRules = {
|
|
5
|
+
'vue/block-tag-newline': [ERROR, {
|
|
6
|
+
singleline: 'always',
|
|
7
|
+
multiline: 'always',
|
|
8
|
+
maxEmptyLines: 0,
|
|
9
|
+
}],
|
|
10
|
+
// https://github.com/vuejs/eslint-plugin-vue/issues/2380
|
|
11
|
+
'vue/define-macros-order': [OFF],
|
|
12
|
+
'vue/first-attribute-linebreak': [ERROR, {
|
|
13
|
+
singleline: 'below',
|
|
14
|
+
multiline: 'below',
|
|
15
|
+
}],
|
|
16
|
+
'vue/html-closing-bracket-newline': [ERROR],
|
|
17
|
+
'vue/html-closing-bracket-spacing': [ERROR],
|
|
18
|
+
'vue/html-comment-content-newline': [OFF],
|
|
19
|
+
'vue/html-comment-content-spacing': [ERROR],
|
|
20
|
+
'vue/html-comment-indent': [OFF],
|
|
21
|
+
'vue/html-indent': [ERROR, INDENT_SIZE],
|
|
22
|
+
'vue/html-quotes': [ERROR, 'double'],
|
|
23
|
+
'vue/html-self-closing': [ERROR],
|
|
24
|
+
'vue/max-attributes-per-line': [ERROR, {
|
|
25
|
+
singleline: 1,
|
|
26
|
+
multiline: 1,
|
|
27
|
+
}],
|
|
28
|
+
'vue/multiline-html-element-content-newline': [ERROR, {
|
|
29
|
+
ignores: ['pre'],
|
|
30
|
+
}],
|
|
31
|
+
'vue/mustache-interpolation-spacing': [ERROR, 'always'],
|
|
32
|
+
'vue/new-line-between-multi-line-property': [OFF],
|
|
33
|
+
'vue/no-multi-spaces': [ERROR],
|
|
34
|
+
'vue/no-spaces-around-equal-signs-in-attribute': [ERROR],
|
|
35
|
+
'vue/padding-line-between-blocks': [ERROR, 'always'],
|
|
36
|
+
'vue/padding-line-between-tags': [OFF],
|
|
37
|
+
'vue/padding-lines-in-component-definition': [OFF],
|
|
38
|
+
'vue/script-indent': [OFF],
|
|
39
|
+
'vue/singleline-html-element-content-newline': [OFF],
|
|
40
|
+
'vue/v-for-delimiter-style': [ERROR, 'in'],
|
|
41
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { baseRules } from './base.js';
|
|
2
|
+
import { extensionRules } from './extension.js';
|
|
3
|
+
import { possibleProblemRules } from './possibleProblems.js';
|
|
4
|
+
import { suggestionRules } from './suggestions.js';
|
|
5
|
+
import { formattingRules } from './formatting.js';
|
|
6
|
+
|
|
7
|
+
export const vueRules = {
|
|
8
|
+
...baseRules,
|
|
9
|
+
...extensionRules,
|
|
10
|
+
...possibleProblemRules,
|
|
11
|
+
...suggestionRules,
|
|
12
|
+
...formattingRules,
|
|
13
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ERROR, OFF, WARN } from '../severity.js';
|
|
2
|
+
|
|
3
|
+
export const possibleProblemRules = {
|
|
4
|
+
'vue/attribute-hyphenation': [ERROR, 'never'],
|
|
5
|
+
'vue/attributes-order': [ERROR],
|
|
6
|
+
'vue/block-lang': [OFF],
|
|
7
|
+
'vue/block-order': [ERROR, {
|
|
8
|
+
order: ['template', 'script', 'style'],
|
|
9
|
+
}],
|
|
10
|
+
'vue/component-api-style': [ERROR, ['script-setup']],
|
|
11
|
+
'vue/component-definition-name-casing': [ERROR, 'PascalCase'],
|
|
12
|
+
'vue/component-name-in-template-casing': [ERROR, 'PascalCase', {
|
|
13
|
+
registeredComponentsOnly: false,
|
|
14
|
+
ignores: [],
|
|
15
|
+
}],
|
|
16
|
+
'vue/component-options-name-casing': [ERROR, 'PascalCase'],
|
|
17
|
+
'vue/custom-event-name-casing': [ERROR, 'camelCase', { ignores: ['/^[a-z]+(?:-[a-z]+)*:[a-z]+((\\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?$/u'] }],
|
|
18
|
+
'vue/define-emits-declaration': [ERROR, 'type-based'],
|
|
19
|
+
'vue/define-props-declaration': [ERROR, 'type-based'],
|
|
20
|
+
'vue/html-button-has-type': [ERROR],
|
|
21
|
+
'vue/html-end-tags': [ERROR],
|
|
22
|
+
'vue/match-component-file-name': [ERROR, {
|
|
23
|
+
extensions: ['vue'],
|
|
24
|
+
shouldMatchCase: true,
|
|
25
|
+
}],
|
|
26
|
+
'vue/multi-word-component-names': [ERROR],
|
|
27
|
+
'vue/next-tick-style': [ERROR, 'promise'],
|
|
28
|
+
'vue/no-bare-strings-in-template': [OFF],
|
|
29
|
+
'vue/no-boolean-default': [ERROR, 'default-false'],
|
|
30
|
+
'vue/no-deprecated-scope-attribute': [ERROR],
|
|
31
|
+
'vue/no-deprecated-slot-attribute': [ERROR],
|
|
32
|
+
'vue/no-deprecated-slot-scope-attribute': [ERROR],
|
|
33
|
+
'vue/no-deprecated-v-is': [ERROR],
|
|
34
|
+
'vue/no-duplicate-attr-inheritance': [ERROR],
|
|
35
|
+
'vue/no-empty-component-block': [OFF],
|
|
36
|
+
'vue/no-lifecycle-after-await': [ERROR],
|
|
37
|
+
'vue/no-multiple-objects-in-class': [ERROR],
|
|
38
|
+
'vue/no-mutating-props': [ERROR],
|
|
39
|
+
'vue/no-potential-component-option-typo': [ERROR],
|
|
40
|
+
'vue/no-ref-as-operand': [ERROR],
|
|
41
|
+
'vue/no-reserved-component-names': [ERROR, {
|
|
42
|
+
disallowVueBuiltInComponents: true,
|
|
43
|
+
disallowVue3BuiltInComponents: true,
|
|
44
|
+
}],
|
|
45
|
+
'vue/no-reserved-keys': [ERROR],
|
|
46
|
+
'vue/no-restricted-block': [OFF],
|
|
47
|
+
'vue/no-restricted-call-after-await': [OFF],
|
|
48
|
+
'vue/no-restricted-component-names': [OFF],
|
|
49
|
+
'vue/no-restricted-component-options': [OFF],
|
|
50
|
+
'vue/no-restricted-custom-event': [OFF],
|
|
51
|
+
'vue/no-restricted-html-elements': [OFF],
|
|
52
|
+
'vue/no-restricted-props': [OFF],
|
|
53
|
+
'vue/no-restricted-static-attribute': [OFF],
|
|
54
|
+
'vue/no-restricted-v-bind': [OFF],
|
|
55
|
+
'vue/no-root-v-if': [ERROR],
|
|
56
|
+
'vue/no-setup-props-reactivity-loss': [OFF],
|
|
57
|
+
'vue/no-static-inline-styles': [WARN],
|
|
58
|
+
'vue/no-template-shadow': [OFF],
|
|
59
|
+
// выключено в общих конфигах, может быть включено в вашем репозитории если есть необходимость.
|
|
60
|
+
'vue/no-undef-components': [OFF],
|
|
61
|
+
'vue/no-undef-properties': [ERROR],
|
|
62
|
+
'vue/no-unsupported-features': [ERROR, {
|
|
63
|
+
version: '^3.4.27',
|
|
64
|
+
ignores: [],
|
|
65
|
+
}],
|
|
66
|
+
'vue/no-unused-components': [ERROR],
|
|
67
|
+
'vue/no-unused-emit-declarations': [ERROR],
|
|
68
|
+
'vue/no-unused-properties': [ERROR, {
|
|
69
|
+
groups: ['props', 'setup'],
|
|
70
|
+
deepData: true,
|
|
71
|
+
ignorePublicMembers: true,
|
|
72
|
+
}],
|
|
73
|
+
'vue/no-unused-refs': [ERROR],
|
|
74
|
+
'vue/no-unused-vars': [ERROR],
|
|
75
|
+
'vue/no-use-v-else-with-v-for': [ERROR],
|
|
76
|
+
'vue/no-use-v-if-with-v-for': [ERROR],
|
|
77
|
+
'vue/no-useless-mustaches': [ERROR],
|
|
78
|
+
'vue/no-useless-v-bind': [ERROR],
|
|
79
|
+
'vue/no-v-html': [ERROR],
|
|
80
|
+
'vue/no-v-text': [ERROR],
|
|
81
|
+
'vue/no-watch-after-await': [ERROR],
|
|
82
|
+
'vue/one-component-per-file': [ERROR],
|
|
83
|
+
'vue/order-in-components': [ERROR],
|
|
84
|
+
'vue/prefer-define-options': [ERROR],
|
|
85
|
+
'vue/prefer-import-from-vue': [ERROR],
|
|
86
|
+
'vue/prefer-separate-static-class': [ERROR],
|
|
87
|
+
'vue/prefer-true-attribute-shorthand': [ERROR, 'always'],
|
|
88
|
+
'vue/prop-name-casing': [ERROR, 'camelCase'],
|
|
89
|
+
'vue/require-default-prop': [OFF],
|
|
90
|
+
'vue/require-direct-export': [ERROR],
|
|
91
|
+
'vue/require-emit-validator': [ERROR],
|
|
92
|
+
'vue/require-explicit-emits': [ERROR],
|
|
93
|
+
'vue/require-expose': [ERROR],
|
|
94
|
+
'vue/require-macro-variable-name': [ERROR],
|
|
95
|
+
'vue/require-name-property': [ERROR],
|
|
96
|
+
'vue/require-prop-comment': [OFF],
|
|
97
|
+
'vue/require-prop-type-constructor': [ERROR],
|
|
98
|
+
'vue/require-prop-types': [ERROR],
|
|
99
|
+
'vue/require-typed-object-prop': [ERROR],
|
|
100
|
+
'vue/require-typed-ref': [ERROR],
|
|
101
|
+
'vue/require-valid-default-prop': [ERROR],
|
|
102
|
+
'vue/sort-keys': [OFF],
|
|
103
|
+
'vue/static-class-names-order': [OFF],
|
|
104
|
+
'vue/this-in-template': [ERROR, 'never'],
|
|
105
|
+
'vue/use-v-on-exact': [ERROR],
|
|
106
|
+
'vue/v-bind-style': [ERROR, 'shorthand'],
|
|
107
|
+
'vue/v-on-event-hyphenation': [ERROR, 'never', { autofix: true }],
|
|
108
|
+
// https://github.com/vuejs/eslint-plugin-vue/issues/2571
|
|
109
|
+
'vue/v-on-handler-style': [OFF],
|
|
110
|
+
'vue/v-on-style': [ERROR, 'shorthand'],
|
|
111
|
+
'vue/v-slot-style': [ERROR],
|
|
112
|
+
'vue/valid-define-options': [ERROR],
|
|
113
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ERROR, OFF } from '../severity.js';
|
|
2
|
+
|
|
3
|
+
export const suggestionRules = {
|
|
4
|
+
'vue/match-component-import-name': [ERROR],
|
|
5
|
+
// 'vue/max-lines-per-block': [WARN, {
|
|
6
|
+
// template: 120,
|
|
7
|
+
// script: 120,
|
|
8
|
+
// style: 120,
|
|
9
|
+
// skipBlankLines: true,
|
|
10
|
+
// }],
|
|
11
|
+
'vue/no-arrow-functions-in-watch': [ERROR],
|
|
12
|
+
'vue/no-async-in-computed-properties': [ERROR],
|
|
13
|
+
'vue/no-child-content': [ERROR],
|
|
14
|
+
'vue/no-computed-properties-in-data': [ERROR],
|
|
15
|
+
'vue/no-deprecated-data-object-declaration': [ERROR],
|
|
16
|
+
'vue/no-deprecated-destroyed-lifecycle': [ERROR],
|
|
17
|
+
'vue/no-deprecated-dollar-listeners-api': [ERROR],
|
|
18
|
+
'vue/no-deprecated-dollar-scopedslots-api': [ERROR],
|
|
19
|
+
'vue/no-deprecated-events-api': [ERROR],
|
|
20
|
+
'vue/no-deprecated-filter': [ERROR],
|
|
21
|
+
'vue/no-deprecated-functional-template': [ERROR],
|
|
22
|
+
'vue/no-deprecated-html-element-is': [ERROR],
|
|
23
|
+
'vue/no-deprecated-inline-template': [ERROR],
|
|
24
|
+
'vue/no-deprecated-model-definition': [ERROR],
|
|
25
|
+
'vue/no-deprecated-props-default-this': [ERROR],
|
|
26
|
+
'vue/no-deprecated-router-link-tag-prop': [ERROR, { components: ['RouterLink'] }],
|
|
27
|
+
'vue/no-deprecated-v-bind-sync': [ERROR],
|
|
28
|
+
'vue/no-deprecated-v-on-native-modifier': [ERROR],
|
|
29
|
+
'vue/no-deprecated-v-on-number-modifiers': [ERROR],
|
|
30
|
+
'vue/no-deprecated-vue-config-keycodes': [ERROR],
|
|
31
|
+
'vue/no-dupe-keys': [ERROR],
|
|
32
|
+
'vue/no-dupe-v-else-if': [ERROR],
|
|
33
|
+
'vue/no-duplicate-attributes': [ERROR],
|
|
34
|
+
'vue/no-export-in-script-setup': [ERROR],
|
|
35
|
+
'vue/no-expose-after-await': [ERROR],
|
|
36
|
+
'vue/no-lone-template': [ERROR],
|
|
37
|
+
'vue/no-multiple-slot-args': [ERROR],
|
|
38
|
+
'vue/no-parsing-error': [ERROR],
|
|
39
|
+
'vue/no-ref-object-reactivity-loss': [ERROR],
|
|
40
|
+
'vue/no-required-prop-with-default': [ERROR],
|
|
41
|
+
'vue/no-reserved-props': [ERROR],
|
|
42
|
+
'vue/no-restricted-class': [OFF],
|
|
43
|
+
'vue/no-shared-component-data': [ERROR],
|
|
44
|
+
'vue/no-side-effects-in-computed-properties': [ERROR],
|
|
45
|
+
'vue/no-template-key': [ERROR],
|
|
46
|
+
'vue/no-template-target-blank': [ERROR],
|
|
47
|
+
'vue/no-textarea-mustache': [ERROR],
|
|
48
|
+
'vue/no-this-in-before-route-enter': [ERROR],
|
|
49
|
+
'vue/no-use-computed-property-like-method': [ERROR],
|
|
50
|
+
'vue/no-useless-template-attributes': [ERROR],
|
|
51
|
+
'vue/no-v-for-template-key-on-child': [ERROR],
|
|
52
|
+
'vue/no-v-text-v-html-on-component': [ERROR],
|
|
53
|
+
'vue/prefer-prop-type-boolean-first': [ERROR],
|
|
54
|
+
'vue/require-component-is': [ERROR],
|
|
55
|
+
'vue/require-render-return': [ERROR],
|
|
56
|
+
'vue/require-slots-as-functions': [ERROR],
|
|
57
|
+
'vue/require-toggle-inside-transition': [ERROR],
|
|
58
|
+
'vue/require-v-for-key': [ERROR],
|
|
59
|
+
'vue/return-in-computed-property': [ERROR],
|
|
60
|
+
'vue/return-in-emits-validator': [ERROR],
|
|
61
|
+
'vue/v-if-else-key': [OFF],
|
|
62
|
+
'vue/valid-attribute-name': [ERROR],
|
|
63
|
+
'vue/valid-define-emits': [ERROR],
|
|
64
|
+
'vue/valid-define-props': [ERROR],
|
|
65
|
+
'vue/valid-next-tick': [ERROR],
|
|
66
|
+
'vue/valid-template-root': [ERROR],
|
|
67
|
+
'vue/valid-v-bind': [ERROR],
|
|
68
|
+
'vue/valid-v-cloak': [ERROR],
|
|
69
|
+
'vue/valid-v-else': [ERROR],
|
|
70
|
+
'vue/valid-v-else-if': [ERROR],
|
|
71
|
+
'vue/valid-v-for': [ERROR],
|
|
72
|
+
'vue/valid-v-html': [ERROR],
|
|
73
|
+
'vue/valid-v-if': [ERROR],
|
|
74
|
+
'vue/valid-v-is': [ERROR],
|
|
75
|
+
'vue/valid-v-memo': [ERROR],
|
|
76
|
+
'vue/valid-v-model': [ERROR],
|
|
77
|
+
'vue/valid-v-on': [ERROR],
|
|
78
|
+
'vue/valid-v-once': [ERROR],
|
|
79
|
+
'vue/valid-v-pre': [ERROR],
|
|
80
|
+
'vue/valid-v-show': [ERROR],
|
|
81
|
+
'vue/valid-v-slot': [ERROR],
|
|
82
|
+
'vue/valid-v-text': [ERROR],
|
|
83
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import path, { dirname } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
|
|
4
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
const concat = (...arrays) => {
|
|
6
|
+
return [].concat(...arrays);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
extends: concat(
|
|
11
|
+
[
|
|
12
|
+
'stylelint-config-standard',
|
|
13
|
+
'stylelint-config-standard-scss',
|
|
14
|
+
'stylelint-config-standard-vue/scss',
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
'./rules/base.js',
|
|
18
|
+
'./rules/stylistic.js',
|
|
19
|
+
'./rules/order.js',
|
|
20
|
+
'./rules/conflicts.js',
|
|
21
|
+
'./rules/scss.js',
|
|
22
|
+
].map((string) => {
|
|
23
|
+
return path.resolve(currentDir, string);
|
|
24
|
+
}),
|
|
25
|
+
),
|
|
26
|
+
plugins: [
|
|
27
|
+
'@stylistic/stylelint-plugin',
|
|
28
|
+
],
|
|
29
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
rules: {
|
|
3
|
+
'color-hex-alpha': 'never',
|
|
4
|
+
'color-hex-length': 'long',
|
|
5
|
+
'color-named': 'never',
|
|
6
|
+
'declaration-no-important': true,
|
|
7
|
+
'declaration-property-value-no-unknown': null,
|
|
8
|
+
'font-family-name-quotes': 'always-unless-keyword',
|
|
9
|
+
'font-family-no-missing-generic-family-keyword': null,
|
|
10
|
+
'font-weight-notation': ['numeric', {
|
|
11
|
+
ignore: ['relative'],
|
|
12
|
+
}],
|
|
13
|
+
'max-nesting-depth': [7, {
|
|
14
|
+
ignore: [
|
|
15
|
+
'blockless-at-rules',
|
|
16
|
+
'pseudo-classes',
|
|
17
|
+
],
|
|
18
|
+
}],
|
|
19
|
+
'media-feature-name-value-no-unknown': true,
|
|
20
|
+
'no-descending-specificity': null,
|
|
21
|
+
'selector-class-pattern': null,
|
|
22
|
+
'selector-max-compound-selectors': 99,
|
|
23
|
+
'selector-max-id': 0,
|
|
24
|
+
'selector-max-universal': 2,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { propertyGroups } from './property-groups.js';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
plugins: ['stylelint-order'],
|
|
5
|
+
rules: {
|
|
6
|
+
'order/order': [
|
|
7
|
+
[
|
|
8
|
+
'dollar-variables',
|
|
9
|
+
'custom-properties',
|
|
10
|
+
'declarations',
|
|
11
|
+
{
|
|
12
|
+
type: 'at-rule',
|
|
13
|
+
name: 'supports',
|
|
14
|
+
},
|
|
15
|
+
'rules',
|
|
16
|
+
{
|
|
17
|
+
type: 'at-rule',
|
|
18
|
+
name: 'container',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
type: 'at-rule',
|
|
22
|
+
name: 'media',
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
{ severity: 'error' },
|
|
26
|
+
],
|
|
27
|
+
'order/properties-order': [
|
|
28
|
+
propertyGroups.map((group) => {
|
|
29
|
+
return {
|
|
30
|
+
...group,
|
|
31
|
+
emptyLineBefore: 'always',
|
|
32
|
+
noEmptyLineBetween: true,
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
{
|
|
36
|
+
unspecified: 'bottom',
|
|
37
|
+
emptyLineBeforeUnspecified: 'always',
|
|
38
|
+
severity: 'error',
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
};
|