diff --git a/.eslintrc.js b/.eslintrc.js index da18d19a95..3681612b35 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,4 @@ module.exports = { - extends: [ - require.resolve('@backstage/cli/config/eslint'), - '@spotify/eslint-config-oss', - ], + root: true, + extends: ['@spotify/eslint-config-oss'], }; diff --git a/packages/backend/.eslintrc.js b/packages/backend/.eslintrc.js index f400a039e7..16a033dbc6 100644 --- a/packages/backend/.eslintrc.js +++ b/packages/backend/.eslintrc.js @@ -1,6 +1,3 @@ module.exports = { - rules: { - 'no-console': 0, // Permitted in console programs - 'new-cap': ['error', { capIsNew: false }], // Because Express constructs things e.g. like 'const r = express.Router()' - }, + extends: [require.resolve('@backstage/cli/config/eslint.backend')], }; diff --git a/packages/cli/config/eslint.backend.js b/packages/cli/config/eslint.backend.js new file mode 100644 index 0000000000..ef6e513cf5 --- /dev/null +++ b/packages/cli/config/eslint.backend.js @@ -0,0 +1,71 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module.exports = { + extends: [ + '@spotify/eslint-config-base', + '@spotify/eslint-config-typescript', + 'prettier', + 'prettier/@typescript-eslint', + 'plugin:jest/recommended', + 'plugin:monorepo/recommended', + ], + parser: '@typescript-eslint/parser', + plugins: ['import'], + env: { + jest: true, + }, + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + }, + ignorePatterns: ['**/dist/**', '**/build/**'], + rules: { + 'no-console': 0, // Permitted in console programs + 'new-cap': ['error', { capIsNew: false }], // Because Express constructs things e.g. like 'const r = express.Router()' + 'import/no-duplicates': 'warn', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: false, + optionalDependencies: true, + peerDependencies: true, + bundledDependencies: true, + }, + ], + '@typescript-eslint/no-unused-vars': [ + 'warn', + { vars: 'all', args: 'after-used', ignoreRestSiblings: true }, + ], + }, + overrides: [ + { + files: ['*.test.*', 'src/setupTests.*', 'dev/**'], + rules: { + // Tests are allowed to import dev dependencies + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + optionalDependencies: true, + peerDependencies: true, + bundledDependencies: true, + }, + ], + }, + }, + ], +}; diff --git a/packages/test-utils-core/package.json b/packages/test-utils-core/package.json index 1b70f4132a..4d695f2d61 100644 --- a/packages/test-utils-core/package.json +++ b/packages/test-utils-core/package.json @@ -21,7 +21,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "dependencies": { "@testing-library/jest-dom": "^4.2.4", diff --git a/packages/theme/.eslintrc.js b/packages/theme/.eslintrc.js new file mode 100644 index 0000000000..13573efa9c --- /dev/null +++ b/packages/theme/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint')], +}; diff --git a/plugins/inventory-backend/.eslintrc.js b/plugins/inventory-backend/.eslintrc.js index f400a039e7..16a033dbc6 100644 --- a/plugins/inventory-backend/.eslintrc.js +++ b/plugins/inventory-backend/.eslintrc.js @@ -1,6 +1,3 @@ module.exports = { - rules: { - 'no-console': 0, // Permitted in console programs - 'new-cap': ['error', { capIsNew: false }], // Because Express constructs things e.g. like 'const r = express.Router()' - }, + extends: [require.resolve('@backstage/cli/config/eslint.backend')], }; diff --git a/plugins/tech-radar/.eslintrc.js b/plugins/tech-radar/.eslintrc.js index dd47f29781..13573efa9c 100644 --- a/plugins/tech-radar/.eslintrc.js +++ b/plugins/tech-radar/.eslintrc.js @@ -1,3 +1,3 @@ module.exports = { - extends: [require.resolve('@backstage/cli/config/eslint.js')], + extends: [require.resolve('@backstage/cli/config/eslint')], };