ESLint: enforce import formatting

Mainly to reduce merge conflict noise

- Order by origin & alphabetically
- Imports should be at the top of the file
- Newline between imports & the rest of the file
- Disallow duplicate imports
- Enforce single-line when only importing one object
- Enforce multi-line when importing two or more
This commit is contained in:
Yury Bondarenko
2023-05-20 09:56:35 +02:00
parent 917c36dbe7
commit fa404fff84
3 changed files with 29 additions and 1 deletions

View File

@@ -9,7 +9,9 @@
"unused-imports", "unused-imports",
"eslint-plugin-lodash", "eslint-plugin-lodash",
"eslint-plugin-jsonc", "eslint-plugin-jsonc",
"eslint-plugin-rxjs" "eslint-plugin-rxjs",
"eslint-plugin-simple-import-sort",
"eslint-plugin-import-newlines"
], ],
"overrides": [ "overrides": [
{ {
@@ -210,9 +212,23 @@
"deprecation/deprecation": "warn", "deprecation/deprecation": "warn",
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"import/order": "off", "import/order": "off",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
"import/no-deprecated": "warn", "import/no-deprecated": "warn",
"import/no-namespace": "error", "import/no-namespace": "error",
"import-newlines/enforce": [
"error",
{
"items": 1,
"semi": true,
"forceSingleLine": true
}
],
"unused-imports/no-unused-imports": "error", "unused-imports/no-unused-imports": "error",
"lodash/import-scope": [ "lodash/import-scope": [
"error", "error",

View File

@@ -169,10 +169,12 @@
"eslint": "^8.39.0", "eslint": "^8.39.0",
"eslint-plugin-deprecation": "^1.4.1", "eslint-plugin-deprecation": "^1.4.1",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-import-newlines": "^1.3.1",
"eslint-plugin-jsdoc": "^39.6.4", "eslint-plugin-jsdoc": "^39.6.4",
"eslint-plugin-jsonc": "^2.6.0", "eslint-plugin-jsonc": "^2.6.0",
"eslint-plugin-lodash": "^7.4.0", "eslint-plugin-lodash": "^7.4.0",
"eslint-plugin-rxjs": "^5.0.3", "eslint-plugin-rxjs": "^5.0.3",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-unused-imports": "^2.0.0", "eslint-plugin-unused-imports": "^2.0.0",
"express-static-gzip": "^2.1.7", "express-static-gzip": "^2.1.7",
"jasmine-core": "^3.8.0", "jasmine-core": "^3.8.0",

View File

@@ -5296,6 +5296,11 @@ eslint-plugin-deprecation@^1.4.1:
tslib "^2.3.1" tslib "^2.3.1"
tsutils "^3.21.0" tsutils "^3.21.0"
eslint-plugin-import-newlines@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.3.1.tgz#e21705667778e8134382b50079fbb2c8d3a2fcde"
integrity sha512-7vyhwliGm+CTwteRw2ym+IO9OaksGYmSt63elPPBM0QJ3zwRwMKtgHOSHVtdHlrSERRTVCsWtMO8dDdAdmHMXg==
eslint-plugin-import@^2.27.5: eslint-plugin-import@^2.27.5:
version "2.27.5" version "2.27.5"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
@@ -5361,6 +5366,11 @@ eslint-plugin-rxjs@^5.0.3:
tsutils "^3.0.0" tsutils "^3.0.0"
tsutils-etc "^1.4.1" tsutils-etc "^1.4.1"
eslint-plugin-simple-import-sort@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351"
integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==
eslint-plugin-unused-imports@^2.0.0: eslint-plugin-unused-imports@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz" resolved "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz"