From 2e53037e80c4b309d6cc96f3b7c7ca681d03a906 Mon Sep 17 00:00:00 2001 From: Unal Muslu Date: Fri, 1 Nov 2024 14:17:46 +0300 Subject: [PATCH 1/4] feat(eslint-config): introduce new import sorting rules --- .../src/rules/importSortRules.ts | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/eslint-config/src/rules/importSortRules.ts b/packages/eslint-config/src/rules/importSortRules.ts index 0bc78ba..86805ed 100644 --- a/packages/eslint-config/src/rules/importSortRules.ts +++ b/packages/eslint-config/src/rules/importSortRules.ts @@ -5,20 +5,22 @@ export const importSortRules: Linter.RulesRecord = { 'error', { groups: [ - // External package imports - ['^\\w', '^@\\w'], - // @commencis package imports - ['^@commencis'], - // Config, util imports - ['(@/config|@/util)'], - // Type imports - ['@/type'], - // Absolute imports - ['^@/'], - // Relative imports - ['^\\.\\./', '^\\./'], - // Style imports + // Side effect imports. + ['^\\u0000'], + // Main framework & external package imports + ['^react', '^vue', '^@angular(/.*|$)', '^next', '^nuxt', '^@?\\w'], + // Internal imports + ['^(asset(s?)|constant(s?)|helper(s?)|util(s?)|i18n)(/.*|$)'], + // Components + ['((.*)/)?components/'], + // Parent imports. Put `..` last. + ['^\\.\\.(?!/?$)', '^\\.\\./?$'], + // Other relative imports. Put same-folder imports and `.` last. + ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'], + // Styles ['^.+\\.s?css$'], + // Images + ['public/static/images', '^.+\\.svg$', '^.+\\.png$'], ], }, ], From a4a36fd809e6857373f613e2fef49537fb7de2f1 Mon Sep 17 00:00:00 2001 From: Unal Muslu Date: Fri, 1 Nov 2024 18:20:15 +0300 Subject: [PATCH 2/4] feat(eslint-config): add more detailed rules based on review feedback --- .../src/rules/importSortRules.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/eslint-config/src/rules/importSortRules.ts b/packages/eslint-config/src/rules/importSortRules.ts index 86805ed..d472c16 100644 --- a/packages/eslint-config/src/rules/importSortRules.ts +++ b/packages/eslint-config/src/rules/importSortRules.ts @@ -7,20 +7,25 @@ export const importSortRules: Linter.RulesRecord = { groups: [ // Side effect imports. ['^\\u0000'], - // Main framework & external package imports - ['^react', '^vue', '^@angular(/.*|$)', '^next', '^nuxt', '^@?\\w'], + // Main frameworks & libraries + ['^react', '^next', '^vue', '^nuxt', '^@angular(/.*|$)', '^expo'], + // External packages + ['^@commencis', '^@?\\w'], + ['^@/'], // Internal imports - ['^(asset(s?)|constant(s?)|helper(s?)|util(s?)|i18n)(/.*|$)'], - // Components - ['((.*)/)?components/'], + [ + '^@?/?(configs(s?)|types(s?)|constants(s?)|helpers(s?)|utils(s?)|lib(s?)|providers(s?))(/.*|$)', + ], + // Project folders + ['((.*)/)?(layouts|pages|modules|features|components)/'], // Parent imports. Put `..` last. ['^\\.\\.(?!/?$)', '^\\.\\./?$'], // Other relative imports. Put same-folder imports and `.` last. ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'], // Styles - ['^.+\\.s?css$'], + ['^.+\\.(s?css|(style(s)?)\\..+)$'], // Images - ['public/static/images', '^.+\\.svg$', '^.+\\.png$'], + ['(asset(s?)|public|static|images)(/.*|$)', '^.+\\.svg$', '^.+\\.png$'], ], }, ], From 54645b64994ceea5318756144bc1c136c13d5733 Mon Sep 17 00:00:00 2001 From: Unal Muslu Date: Mon, 4 Nov 2024 18:01:20 +0300 Subject: [PATCH 3/4] feat(eslint-config): include node modules for sorting --- packages/eslint-config/src/rules/importSortRules.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/eslint-config/src/rules/importSortRules.ts b/packages/eslint-config/src/rules/importSortRules.ts index d472c16..243a062 100644 --- a/packages/eslint-config/src/rules/importSortRules.ts +++ b/packages/eslint-config/src/rules/importSortRules.ts @@ -8,7 +8,15 @@ export const importSortRules: Linter.RulesRecord = { // Side effect imports. ['^\\u0000'], // Main frameworks & libraries - ['^react', '^next', '^vue', '^nuxt', '^@angular(/.*|$)', '^expo'], + [ + '^react', + '^next', + '^vue', + '^nuxt', + '^@angular(/.*|$)', + '^expo', + '^node', + ], // External packages ['^@commencis', '^@?\\w'], ['^@/'], From 6add141297f1cb5c8c1d8352cfba0eb175e9ebed Mon Sep 17 00:00:00 2001 From: Unal Muslu Date: Mon, 4 Nov 2024 18:07:07 +0300 Subject: [PATCH 4/4] chore(eslint-config): add changeset for import sort rules --- .changeset/early-mugs-drop.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/early-mugs-drop.md diff --git a/.changeset/early-mugs-drop.md b/.changeset/early-mugs-drop.md new file mode 100644 index 0000000..2f87eac --- /dev/null +++ b/.changeset/early-mugs-drop.md @@ -0,0 +1,5 @@ +--- +'@commencis/eslint-config': minor +--- + +improve existing eslint sorting rules and add new ones