@@ -11,7 +11,8 @@ import fs from 'fs';
1111import path from 'path' ;
1212import eslintJs from '@eslint/js' ;
1313import eslintPluginEslintCommentsConfigs from '@eslint-community/eslint-plugin-eslint-comments/configs' ;
14- import eslintPluginImport from 'eslint-plugin-import' ;
14+ import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript' ;
15+ import eslintPluginImportX from 'eslint-plugin-import-x' ;
1516import eslintPluginJest from 'eslint-plugin-jest' ;
1617import eslintPluginJsdoc from 'eslint-plugin-jsdoc' ;
1718import eslintPluginMarkdown from 'eslint-plugin-markdown' ;
@@ -39,7 +40,7 @@ function getPackages() {
3940const config = typescriptEslint . config (
4041 eslintJs . configs . recommended ,
4142 eslintPluginMarkdown . configs . recommended ,
42- eslintPluginImport . flatConfigs . errors ,
43+ eslintPluginImportX . flatConfigs . errors ,
4344 eslintPluginEslintCommentsConfigs . recommended ,
4445 eslintPluginUnicorn . configs . recommended ,
4546 eslintPluginPromise . configs [ 'flat/recommended' ] ,
@@ -48,16 +49,14 @@ const config = typescriptEslint.config(
4849 languageOptions : { globals : { ...globals . builtins , console : 'readonly' } } ,
4950 plugins : { jsdoc : eslintPluginJsdoc , local : eslintPluginLocal } ,
5051 settings : {
51- 'import/ignore' : [ 'react-native' ] ,
52+ 'import-x /ignore' : [ 'react-native' ] ,
5253 // using `new RegExp` makes sure to escape `/`
53- 'import/internal-regex' : new RegExp (
54+ 'import-x /internal-regex' : new RegExp (
5455 getPackages ( )
5556 . map ( pkg => `^${ pkg } $` )
5657 . join ( '|' ) ,
5758 ) . source ,
58- 'import/resolver' : {
59- typescript : { } ,
60- } ,
59+ 'import-x/resolver-next' : createTypeScriptImportResolver ( ) ,
6160 } ,
6261 rules : {
6362 'accessor-pairs' : [ 'warn' , { setWithoutGet : true } ] ,
@@ -83,8 +82,8 @@ const config = typescriptEslint.config(
8382 'handle-callback-err' : 'off' ,
8483 'id-length' : 'off' ,
8584 'id-match' : 'off' ,
86- 'import/no-duplicates' : 'error' ,
87- 'import/no-extraneous-dependencies' : [
85+ 'import-x /no-duplicates' : 'error' ,
86+ 'import-x /no-extraneous-dependencies' : [
8887 'error' ,
8988 {
9089 devDependencies : [
@@ -99,8 +98,8 @@ const config = typescriptEslint.config(
9998 ] ,
10099 } ,
101100 ] ,
102- 'import/no-unresolved' : [ 'error' , { ignore : [ 'fsevents' ] } ] ,
103- 'import/order' : [
101+ 'import-x /no-unresolved' : [ 'error' , { ignore : [ 'fsevents' ] } ] ,
102+ 'import-x /order' : [
104103 'error' ,
105104 {
106105 alphabetize : {
@@ -317,7 +316,7 @@ const config = typescriptEslint.config(
317316 typescriptEslint . configs . eslintRecommended ,
318317 typescriptEslint . configs . strict ,
319318 typescriptEslint . configs . stylistic ,
320- eslintPluginImport . flatConfigs . typescript ,
319+ eslintPluginImportX . flatConfigs . typescript ,
321320 {
322321 rules : {
323322 '@typescript-eslint/array-type' : [ 'error' , { default : 'generic' } ] ,
@@ -346,11 +345,11 @@ const config = typescriptEslint.config(
346345 '@typescript-eslint/no-invalid-void-type' : 'off' ,
347346 '@typescript-eslint/consistent-type-definitions' : 'off' ,
348347 '@typescript-eslint/no-require-imports' : 'off' ,
349- 'import/no-unresolved' : 'off' ,
348+ 'import-x /no-unresolved' : 'off' ,
350349 '@typescript-eslint/no-unsafe-function-type' : 'off' ,
351350
352351 // not needed to be enforced for TS
353- 'import/namespace' : 'off' ,
352+ 'import-x /namespace' : 'off' ,
354353 } ,
355354 } ,
356355 ]
@@ -448,7 +447,7 @@ const config = typescriptEslint.config(
448447 'jest/no-identical-title' : 'error' ,
449448 'jest/require-to-throw-message' : 'error' ,
450449 'jest/valid-expect' : 'error' ,
451- 'import/order' : 'off' ,
450+ 'import-x /order' : 'off' ,
452451 } ,
453452 } ,
454453
@@ -506,9 +505,9 @@ const config = typescriptEslint.config(
506505 '@typescript-eslint/no-namespace' : 'off' ,
507506 '@typescript-eslint/no-empty-interface' : 'off' ,
508507 'consistent-return' : 'off' ,
509- 'import/export' : 'off' ,
510- 'import/no-extraneous-dependencies' : 'off' ,
511- 'import/no-unresolved' : 'off' ,
508+ 'import-x /export' : 'off' ,
509+ 'import-x /no-extraneous-dependencies' : 'off' ,
510+ 'import-x /no-unresolved' : 'off' ,
512511 'jest/no-focused-tests' : 'off' ,
513512 'jest/require-to-throw-message' : 'off' ,
514513 'no-console' : 'off' ,
@@ -527,7 +526,7 @@ const config = typescriptEslint.config(
527526 // The following disabled when upgrade ESLint to v9, some of them make sense to enable
528527 'prefer-template' : 'off' ,
529528 '@typescript-eslint/no-require-imports' : 'off' ,
530- 'import/default' : 'off' ,
529+ 'import-x /default' : 'off' ,
531530 'jest/prefer-to-have-length' : 'off' ,
532531 'unicorn/prefer-at' : 'off' ,
533532 'unicorn/numeric-separators-style' : 'off' ,
@@ -582,8 +581,8 @@ const config = typescriptEslint.config(
582581 files : [ 'docs/**/*' , 'website/**/*' ] ,
583582 rules : {
584583 'no-redeclare' : 'off' ,
585- 'import/order' : 'off' ,
586- 'import/sort-keys' : 'off' ,
584+ 'import-x /order' : 'off' ,
585+ 'import-x /sort-keys' : 'off' ,
587586 'no-restricted-globals' : [ 'off' ] ,
588587 'sort-keys' : 'off' ,
589588 } ,
@@ -608,7 +607,7 @@ const config = typescriptEslint.config(
608607 files : [ 'packages/**/*.ts' ] ,
609608 rules : {
610609 '@typescript-eslint/explicit-module-boundary-types' : 'error' ,
611- 'import/no-anonymous-default-export' : [
610+ 'import-x /no-anonymous-default-export' : [
612611 'error' ,
613612 {
614613 allowAnonymousClass : false ,
@@ -683,7 +682,7 @@ const config = typescriptEslint.config(
683682 '.eslintplugin/**' ,
684683 ] ,
685684 rules : {
686- 'import/no-extraneous-dependencies' : 'off' ,
685+ 'import-x /no-extraneous-dependencies' : 'off' ,
687686 'unicorn/consistent-function-scoping' : 'off' ,
688687 'unicorn/error-message' : 'off' ,
689688 } ,
@@ -724,7 +723,7 @@ const config = typescriptEslint.config(
724723 rules : {
725724 '@typescript-eslint/no-extraneous-class' : 'off' ,
726725 '@typescript-eslint/no-unused-vars' : 'off' ,
727- 'import/no-unresolved' : 'off' ,
726+ 'import-x /no-unresolved' : 'off' ,
728727 'no-console' : 'off' ,
729728 'no-unused-vars' : 'off' ,
730729 'unicorn/no-anonymous-default-export' : 'off' ,
@@ -755,8 +754,8 @@ const config = typescriptEslint.config(
755754 'e2e/transform/babel-jest-async/__tests__/babelJest.test.js' ,
756755 ] ,
757756 rules : {
758- 'import/namespace' : 'off' ,
759- 'import/default' : 'off' ,
757+ 'import-x /namespace' : 'off' ,
758+ 'import-x /default' : 'off' ,
760759 } ,
761760 } ,
762761 {
0 commit comments