Skip to content

Commit 9b4b9ae

Browse files
authored
fix: Avoid reporting multiple times the no-dupe-class-members with ESLint v8 (#78)
1 parent c36ea2e commit 9b4b9ae

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"dependencies": {
2121
"@babel/core": "~7.16.0",
2222
"@babel/eslint-parser": "~7.16.0",
23-
"eslint-restricted-globals": "~0.2.0"
23+
"eslint-restricted-globals": "~0.2.0",
24+
"semver": "^7.3.5"
2425
},
2526
"devDependencies": {
2627
"@lwc/eslint-plugin-lwc": "^1.1.1",
@@ -31,8 +32,7 @@
3132
"husky": "^7.0.4",
3233
"lint-staged": "^11.2.6",
3334
"mocha": "^9.1.3",
34-
"prettier": "^2.4.1",
35-
"semver": "^7.3.5"
35+
"prettier": "^2.4.1"
3636
},
3737
"peerDependencies": {
3838
"@lwc/eslint-plugin-lwc": "^1.0.0",

recommended.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*/
77
'use strict';
88

9+
const semver = require('semver');
10+
const { ESLint } = require('eslint');
911
const restrictedGlobals = require('eslint-restricted-globals');
1012

1113
module.exports = {
@@ -110,7 +112,6 @@ module.exports = {
110112
'@lwc/lwc/no-async-operation': 'error',
111113
'@lwc/lwc/no-attributes-during-construction': 'error',
112114
'@lwc/lwc/no-document-query': 'error',
113-
'@lwc/lwc/no-dupe-class-members': 'error',
114115
'@lwc/lwc/no-inner-html': 'error',
115116
'@lwc/lwc/no-leading-uppercase-api-name': 'error',
116117
'@lwc/lwc/no-template-children': 'error',
@@ -128,5 +129,11 @@ module.exports = {
128129
// Disable unresolved import rule since it doesn't work well with the way the LWC compiler
129130
// resolves the different modules
130131
'import/no-unresolved': 'off',
132+
133+
// Misc
134+
// In ESLint v8 the built-in `no-dupe-class-member` rules added support for duplicated
135+
// class fields. We should disable the `lwc/no-dupe-class-members` rule to avoid duplicated
136+
// linting errors.
137+
'@lwc/lwc/no-dupe-class-members': semver.lt(ESLint.version, '8.0.0') ? 'error' : 'off',
131138
},
132139
};

test/recommended.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,10 @@ describe('recommended config', () => {
8787
`);
8888

8989
const { messages } = results[0];
90-
const isEslint7 = semver.satisfies(eslint.ESLint.version, '^7');
91-
const expected = isEslint7
90+
91+
const expected = semver.lt(eslint.ESLint.version, '8.0.0')
9292
? ['@lwc/lwc/no-dupe-class-members', '@lwc/lwc/no-dupe-class-members']
93-
: [
94-
'@lwc/lwc/no-dupe-class-members',
95-
'no-dupe-class-members',
96-
'@lwc/lwc/no-dupe-class-members',
97-
'no-dupe-class-members',
98-
];
93+
: ['no-dupe-class-members', 'no-dupe-class-members'];
9994
assert.deepStrictEqual(
10095
messages.map((_) => _.ruleId),
10196
expected,

0 commit comments

Comments
 (0)