Skip to content

Commit d9f0b90

Browse files
committed
[infra] Migrate to import-x
1 parent d94eb28 commit d9f0b90

File tree

7 files changed

+87
-41
lines changed

7 files changed

+87
-41
lines changed

eslint.config.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default defineConfig(
3232
'material-ui/no-empty-box': 'off',
3333
},
3434
settings: {
35-
'import/resolver': {
35+
'import-x/resolver': {
3636
typescript: {
3737
project: ['tsconfig.json'],
3838
},
@@ -62,7 +62,7 @@ export default defineConfig(
6262
files: ['packages/bundle-size-checker/**/*'],
6363
rules: {
6464
// Allow .js file extensions in import statements for ESM compatibility
65-
'import/extensions': [
65+
'import-x/extensions': [
6666
'error',
6767
'ignorePackages',
6868
{

packages/babel-plugin-minify-errors/__fixtures__/eslint.config.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ export default {
77

88
// Babel import helpers do not add one.
99
// Since this is auto generated code we don't care about code style.
10-
'import/newline-after-import': 'off',
11-
'import/no-unresolved': 'off',
10+
'import-x/newline-after-import': 'off',
11+
'import-x/no-unresolved': 'off',
1212
'@typescript-eslint/no-unused-vars': 'off',
1313
'no-undef': 'off',
1414
},

packages/code-infra/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"eslint-config-prettier": "^10.1.8",
5353
"eslint-import-resolver-typescript": "^4.4.4",
5454
"eslint-module-utils": "^2.12.1",
55-
"eslint-plugin-import": "^2.32.0",
55+
"eslint-plugin-import-x": "^4.16.1",
5656
"eslint-plugin-jsx-a11y": "^6.10.2",
5757
"eslint-plugin-mocha": "^11.1.0",
5858
"eslint-plugin-react": "^7.37.5",

packages/code-infra/src/eslint/baseConfig.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { includeIgnoreFile } from '@eslint/compat';
22
import eslintJs from '@eslint/js';
33
import prettier from 'eslint-config-prettier/flat';
4-
import importPlugin from 'eslint-plugin-import';
4+
import importPlugin from 'eslint-plugin-import-x';
55
import jsxA11yPlugin from 'eslint-plugin-jsx-a11y';
66
import reactPlugin from 'eslint-plugin-react';
77
import { configs as reactCompilerPluginConfigs } from 'eslint-plugin-react-compiler';
@@ -66,7 +66,7 @@ export function createBaseConfig(
6666
{
6767
files: ['**/*.mjs'],
6868
rules: {
69-
'import/extensions': [
69+
'import-x/extensions': [
7070
'error',
7171
'ignorePackages',
7272
{

packages/code-infra/src/eslint/material-ui/config.mjs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,15 @@ const criticalAirbnbRules = {
8080
'no-promise-executor-return': 'error',
8181

8282
// Import rules (critical ones not in recommended)
83-
'import/order': ['error', { groups: [['builtin', 'external', 'internal']] }],
84-
'import/first': 'error',
85-
'import/no-mutable-exports': 'error',
86-
'import/newline-after-import': 'error',
87-
// https://github.com/import-js/eslint-plugin-import/blob/master/docs/rules/namespace.md
88-
'import/namespace': 'off',
83+
'import-x/order': ['error', { groups: [['builtin', 'external', 'internal']] }],
84+
'import-x/first': 'error',
85+
'import-x/no-mutable-exports': 'error',
86+
'import-x/newline-after-import': 'error',
87+
// https://github.com/import-js/eslint-plugin-import-x/blob/master/docs/rules/namespace.md
88+
'import-x/namespace': 'off',
8989
// Forbid require() calls with expressions
90-
// https://github.com/import-js/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md
91-
'import/no-dynamic-require': 'error',
90+
// https://github.com/import-js/eslint-plugin-import-x/blob/master/docs/rules/no-dynamic-require.md
91+
'import-x/no-dynamic-require': 'error',
9292

9393
// Additional best practices
9494
'default-case': ['error', { commentPattern: '^no default$' }],
@@ -177,9 +177,9 @@ const criticalAirbnbRules = {
177177
const typescriptOverrides = {
178178
// The following rules are enabled in Airbnb config, but are recommended to be disabled within TypeScript projects
179179
// See: https://github.com/typescript-eslint/typescript-eslint/blob/13583e65f5973da2a7ae8384493c5e00014db51b/docs/linting/TROUBLESHOOTING.md#eslint-plugin-import
180-
'import/named': 'off',
181-
'import/no-named-as-default-member': 'off',
182-
'import/no-unresolved': 'off',
180+
'import-x/named': 'off',
181+
'import-x/no-named-as-default-member': 'off',
182+
'import-x/no-unresolved': 'off',
183183

184184
// TypeScript equivalents of ESLint rules
185185
'default-param-last': 'off',
@@ -238,7 +238,7 @@ const typescriptOverrides = {
238238
'@typescript-eslint/no-this-alias': 'off',
239239

240240
// TypeScript extensions handling
241-
'import/extensions': [
241+
'import-x/extensions': [
242242
'error',
243243
'ignorePackages',
244244
{
@@ -310,23 +310,23 @@ export function createCoreConfig(options = {}) {
310310
{
311311
name: 'material-ui-base',
312312
settings: {
313-
'import/resolver': {
313+
'import-x/resolver': {
314314
node: {
315315
extensions: ['.mjs', '.js', '.json'],
316316
},
317317
typescript: {
318318
project: ['tsconfig.node.json', 'apps/*/tsconfig.json', 'packages/*/tsconfig.json'],
319319
},
320320
},
321-
'import/extensions': ['.js', '.mjs', '.jsx', '.ts', '.tsx', '.d.ts'],
322-
'import/core-modules': [],
323-
'import/ignore': ['node_modules', '\\.(css|svg|json)$'],
321+
'import-x/extensions': ['.js', '.mjs', '.jsx', '.mts', '.ts', '.tsx', '.d.ts'],
322+
'import-x/core-modules': [],
323+
'import-x/ignore': ['node_modules', '\\.(css|svg|json)$'],
324324
// Override with TypeScript-specific settings
325-
'import/parsers': {
325+
'import-x/parsers': {
326326
'@typescript-eslint/parser': ['.ts', '.tsx'],
327327
},
328328
// Extend Airbnb extensions with TypeScript
329-
'import/external-module-folders': ['node_modules', 'node_modules/@types'],
329+
'import-x/external-module-folders': ['node_modules', 'node_modules/@types'],
330330
},
331331
rules: {
332332
...criticalAirbnbRules,
@@ -383,15 +383,15 @@ export function createCoreConfig(options = {}) {
383383
],
384384

385385
// Not needed in general, can be turned on for specific files
386-
'import/prefer-default-export': 'off',
386+
'import-x/prefer-default-export': 'off',
387387
// Not sure why it doesn't work
388-
'import/named': 'off',
389-
'import/no-cycle': 'off',
388+
'import-x/named': 'off',
389+
'import-x/no-cycle': 'off',
390390
// Missing yarn workspace support
391-
'import/no-extraneous-dependencies': 'off',
391+
'import-x/no-extraneous-dependencies': 'off',
392392
// The code is already coupled to webpack. Prefer explicit coupling.
393-
'import/no-webpack-loader-syntax': 'off',
394-
'import/no-relative-packages': 'error',
393+
'import-x/no-webpack-loader-syntax': 'off',
394+
'import-x/no-relative-packages': 'error',
395395

396396
// doesn't work?
397397
'jsx-a11y/label-has-associated-control': [

packages/code-infra/src/eslint/testConfig.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const baseSpecRules = {
2020
'@typescript-eslint/no-use-before-define': 'off',
2121
'@typescript-eslint/ban-ts-comment': 'off',
2222

23-
'import/prefer-default-export': 'off',
23+
'import-x/prefer-default-export': 'off',
2424

2525
'jsx-a11y/anchor-has-content': 'off',
2626
'jsx-a11y/anchor-is-valid': 'off',
@@ -61,7 +61,7 @@ export function createTestConfig(options = {}) {
6161
},
6262
rules: {
6363
// does not work with wildcard imports. Mistakes will throw at runtime anyway
64-
'import/named': 'off',
64+
'import-x/named': 'off',
6565
'material-ui/disallow-active-element-as-key-event-target': 'error',
6666

6767
// disable eslint-plugin-jsx-a11y

pnpm-lock.yaml

Lines changed: 54 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)