Skip to content

9romise/eslint-import-resolver-oxc

Repository files navigation

eslint-import-resolver-oxc

npm version npm download npm bundle size License

A simply wrapped oxc-resolver for eslint-plugin-import-x and eslint-plugin-import.

Feature

A good replacement for eslint-import-resolver-node and eslint-import-resolver-typescript.

You can get more info about resolver in the README of eslint-plugin-import-x.

Usage

Installation

npm install eslint-import-resolver-oxc --save-dev

Add script for eslint.config.js

For eslint-plugin-import-x(>=4.5.0):

// eslint.config.js
export default [
  {
    settings: {
      'import-x/resolver-next': [
        createOxcImportResolver({
          // resolver options
        }),
        // other resolvers
      ]
    }
  }
]
For `eslint-plugin-import-x(<4.5.0)`:

[!NOTE]

According to https://github.com/un-ts/eslint-plugin-import-x/blob/master/src/utils/resolve.ts#L155

The settings prefix is hard coded as import-x/ even with flat config.

// eslint.config.js
export default [
  {
    settings: {
      'import-x/resolver': 'oxc'
    }
  }
]

or

// eslint.config.js
export default [
  {
    settings: {
      'import-x/resolver': {
        oxc: true
        // other resolvers...
      }
    }
  }
]

or

// eslint.config.js
export default [
  {
    settings: {
      'import-x/resolver': {
        oxc: {
          // resolver options...
        },
        // other resolvers...
      }
    }
  }
]

For eslint-plugin-import:

Replace import-x/resolver with import/resolver in the object above.

Options

Default options see normalizeOptions.ts

bundlerConfig (experimental, only supported in async function)

This option can be a string or an object.

String option:

the path of the bundler's config file.

Object option:

  • type: the type of the bundler.
  • path: the config of the bundler.
  • options: some special options for bundler config.

If only the type is specified, the configuration file in the root directory (cwd) will be automatically detected, similar to how tsconfig is handled.

If only the path is specified, thetype will be inferred based on the filename.

// eslint.config.js
import { createOxcImportResolver, transformViteConfig } from 'eslint-import-resolver-oxc'

export default [
  {
    settings: {
      'import-x/resolver-next': [
        await createOxcImportResolver({
          bundlerConfig: 'vite.config.ts',
        }),
      ]
    }
  }
]

others

The jsconfig.json and tsconfig.json in the root directory (cwd) will automatically detected.

More options see oxc-resolver

Who is using?

Motivation

Eslint is a bit slow in large projects. While I track the performance of the rules, I found that eslint-plugin-import-x took a lot of time. I thought change a resolver might bring some improvements.

Credit

I can't finish the project without the help of oxc-resolver.

Thanks @Boshen for his work on oxc-resolver.

License

MIT License © 2024-PRESENT Vida Xie