NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4506 most downloaded on npm
Import with sanity.
Last release 3 months ago
28 Jun 2026
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
69 releases · first in 2024
### Patch Changes - #498 `cf25a01` Thanks @marcalexiei! - fix(extensions): don't require an extension for package subpaths that resolve to a .d.ts (e.
cf25a01 Thanks @marcalexiei! - fix(extensions): don't require an extension for package subpaths that resolve to a .d.ts (e.g. vitest/config)Note: single-segment subpath imports without a slash (e.g. #dep) are still skipped by the existing external-root-module classification; fixing that is
One column per month.
4b2c0c5 Thanks @regseb! - Support RegExp in the import-x/ignore setting and the ignore option of the no-unresolved rule.#494 1c84235 Thanks @morgan-coded! - Fixed no-unresolved crashing when case-sensitive path checks encounter EACCES or EPERM on an ancestor directory.
#481 3e13121 Thanks @B4nan! - fix: memoize legacyNodeResolve resolver to avoid native memory leak
#484 9a07009 Thanks @sairus2k! - Make the extensions rule check Node.js subpath imports (specifiers starting with #, e.g. #utils/helper). Previously parsePath treated a leading # as a URL hash fragment, so the rule skipped extension validation for these imports.
Note: single-segment subpath imports without a slash (e.g. #dep) are still skipped by the existing external-root-module classification; fixing that is deferred to avoid expanding scope.
#468 240ed58 Thanks @silverwind! - Make extensions handle .d.ts correctly
#479 e3cc7e4 Thanks @mrginglymus! - fix: strip querystrings and hash fragments when checking for file existence
#476 fce29b1 Thanks @nbouvrette! - fix(deps): replace @package-json/types with an inline minimal type
Updating the minimum minimatch _10_ version to _10.1.2_ which updates a dependency (@isaacs/brace-expansion) with a critical vulnerability. See
#457 1da4043 Thanks @SukkaW! - Make the no-unused-modules rule no-op on ESLint 10 or later for now before we can implement an alternative. A warning message about this behavior is added, and can be suppressed with the new suppressMissingFileEnumeratorAPIWarning rule option (import-x/no-unused-modules: ['error', { suppressMissingFileEnumeratorAPIWarning: true }]).
#450 a51be0f Thanks @andrewgaun! - fix(deps): Bumping minimatch 10 version to avoid dependency with a critical vulnerability
Updating the minimum minimatch 10 version to 10.1.2 which updates a dependency (@isaacs/brace-expansion) with a critical vulnerability. See https://github.com/advisories/GHSA-7h2j-956f-4vf2
#466 b669aca Thanks @SukkaW! - Make eslint-plugin-import-x compatible with ESLint's defineConfig
#434 a3aae61 Thanks @stepankuzmin! - fix(deps): replace type-fest with @package-json/types
PackageJson types are imported in published declaration files (lib/rules/no-extraneous-dependencies.d.ts and lib/utils/read-pkg-up.d.ts), which causes TypeScript compilation errors for consumers who don't have skipLibCheck enabled. Replacing type-fest with the smaller @package-json/types package ensures the types are available to all consumers while reducing bundle size.
#458 60312ee Thanks @SukkaW! - Bump peer deps version range to include ESLint 10 support
#443 b416a8a Thanks @baevm! - consistent-type-specifier-style: Add exception for TS resolution-mode import attributes
#454 d3f8d67 Thanks @SukkaW! - First step toward ESLint 10 support:
sourceType determination now prefers context.languageOptions when possiblecontext.parserOptions no longer results in crashes with ESLint 10getParser and getParserPath implementations into one getParserOrPath#406 d0a7816 Thanks @marcalexiei! - fix(package): remove config and rules exports pointing to empty files
### Patch Changes - #399 `33f07b4` Thanks @JounQin! - fix: should only use context.physicalFilename as fallback instead of main source - #400 `34adb40
@lnhrdt made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/393
1c8b9ae Thanks @Rel1cx and @JounQin! - feat: port react-x/prefer-react-namespace-import into prefer-namespace-import#393 14cb948 Thanks @lnhrdt and @JounQin! - fix(extensions): always calculate fix option
#388 1089d9f Thanks @JounQin! - fix: take context.cwd into account for cache key
#390 8ca9272 Thanks @scytacki, @JounQin and @arcanis! - fix: pnp issue when used in a monorepo
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.15.2...v4.16.0
@error-four-o-four made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/378
#378 cdb95ba Thanks @error-four-o-four! - chore: adopt new deprecated: DeprecatedInfo meta rule option
#383 738a7cf Thanks @JounQin! - fix: get npm client and install command correctly
#382 d536756 Thanks @JounQin! - chore: bump unrs-resolver to v1.9.0, it'll fallback to napi-postinstall check at runtime
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.15.1...v4.15.2
@JoseGoncalves made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/368
#373 90ec1f1 Thanks @JounQin! - chore: migrate stable-hash to stable-hash-x
#371 4f97a1a Thanks @dword-design and @JounQin! - fix: take context.cwd into account for glob options of rules no-extraneous-dependencies and no-unassigned-import
#371 4f97a1a Thanks @JounQin! - fix: enable nocomment: true for glob options of rules no-import-module-exports and no-namespace
#368 74a16c5 Thanks @JoseGoncalves! - fix: drop languageOptions config from flat/recommended
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.15.0...v4.15.1
### Minor Changes - #362 `8bd40d8` Thanks @JounQin! - refactor: drop @typescript-eslint/utils on production Full Changelog: https://github.com/un-ts/e
@JesseDocken made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/358
#360 3a3f5f8 Thanks @JounQin! - fix: try/catch enumerator.iterateFiles gracefully
#357 46c8bc6 Thanks @JounQin! - chore(deps): bump @typescript-eslint/utils and unrs-resolver
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.14.1...v4.14.2
### Patch Changes - #355 `81f3d31` Thanks @JounQin! - fix: tslib is no longer used because we're targeting ES2022 Full Changelog: https://github.com/u
@43081j made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/350
#272 43cdd21 Thanks @SukkaW and @JounQin! - feat: map legacy node resolver to the new one with fallback support
#350 12a7cda Thanks @43081j! - Expose flat configs in configs object to allow use of ESLint extends
3bc48fc Thanks @JounQin! - fix: enable nocomment glob option for rule no-unassigned-import's allow optionFull Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.13.3...v4.14.0
### Patch Changes - #348 `f949929` Thanks @JounQin! - fix(types): exported importX should also have flatConfigs as property Full Changelog: https://gi
### Patch Changes - #344 `2c007d0` Thanks @JounQin! - fix: share same plugin reference for default export - #346 `2991f2e` Thanks @JounQin! - fix: rul
#344 2c007d0 Thanks @JounQin! - fix: share same plugin reference for default export
#346 2991f2e Thanks @JounQin! - fix: rule dynamic-import-chunkname crash due to ts migration
#342 a55dcc7 Thanks @JounQin! - fix(deps): bump eslint-import-context to v0.1.5
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.13.1...v4.13.2
### Patch Changes - #340 `180785d` Thanks @JounQin! - fix(deps): bump eslint-import-context to v0.1.4 Full Changelog: https://github.com/un-ts/eslint-
### Minor Changes - #335 `371ebee` Thanks @JounQin! - feat: integrate `eslint-import-context` to get rule context without additional params Full Chang
371ebee Thanks @JounQin! - feat: integrate eslint-import-context to get rule context without additional paramsFull Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.12.2...v4.13.0
### Patch Changes - #332 `0b3809b` Thanks @JounQin! - fix: remove buggy module-sync exports field
### Patch Changes - #329 `4b284cb` Thanks @JounQin! - feat: add suggestions support for extensions unexpected case Full Changelog: https://github.com/
### Minor Changes - #327 `90c1cd0` Thanks @Xunnamius, @stephenjason89 and @JounQin! - feat(extensions): support pathGroupOverrides and fix options Ful
### Patch Changes - #321 `fc4c72c` Thanks @SukkaW! - fix: accept non-array resolver in resolver-next setting
### Minor Changes - #314 `11ebfbd` Thanks @JounQin! - refactor: migrate deprecated doctrine to comment-parser Full Changelog: https://github.com/un-ts
@Shinigami92 made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/307
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.10.5...v4.10.6
### Patch Changes - #300 `db1824b` Thanks @JounQin! - fix: support run with worker eval Full Changelog: https://github.com/un-ts/eslint-plugin-import-
### Patch Changes - #299 `bf50a4d` Thanks @renovate! - chore(deps): bump @typescript-eslint/utils to v8.30 - #297 `9769f3c` Thanks @JounQin! - fix: su
### Patch Changes - #292 `1342127` Thanks @JounQin! - refactor: remove unnecessary check for pnpapi because unrs-resolver already handles it Full Chan
### Patch Changes - #282 `9f4f213` Thanks @JounQin! - chore: bump unrs-resolver to v1.4.1 Full Changelog: https://github.com/un-ts/eslint-plugin-impor
### Patch Changes - #280 `4966857` Thanks @JounQin! - chore: bump all (dev) deps - #280 `4966857` Thanks @JounQin! - fix: incorrect top level types fi
@jribbens made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/276
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.9.4...v4.10.0
### Patch Changes - #267 `e9e2300` Thanks @JounQin! - chore: bump unrs-resolver to v1.3.3 Full Changelog: https://github.com/un-ts/eslint-plugin-impor
@karlhorky made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/262
#263 c0046a9 Thanks @JounQin! - chore: migrate to rebranding unrs-resolver with new targets supported:
i686-pc-windows-msvcarmv7-unknown-linux-musleabihfpowerpc64le-unknown-linux-gnus390x-unknown-linux-gnuFull Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.9.2...v4.9.3
### Patch Changes - #259 `baf7086` Thanks @JounQin! - fix: PluginConfig should use classic config Full Changelog: https://github.com/un-ts/eslint-plug
### Patch Changes - #256 `e66575f` Thanks @JounQin! - refactor: revert picomatch back to minimatch Full Changelog: https://github.com/un-ts/eslint-plu
@TrevorBurnham made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/248
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.8.1...v4.9.0
### Patch Changes - #251 `af5de32` Thanks @JounQin! - chore: bump `rspack-resolver` to v1.2.0 Full Changelog: https://github.com/un-ts/eslint-plugin-i
af5de32 Thanks @JounQin! - chore: bump rspack-resolver to v1.2.0Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.8.0...v4.8.1
### Minor Changes - #240 `60eb443` Thanks @JounQin! - feat: migrate minimatch to picomatch Full Changelog: https://github.com/un-ts/eslint-plugin-impo
### Patch Changes - #245 `437db59` Thanks @JounQin! - fix: align pnpapi resolved path with enhanced-resolve Full Changelog: https://github.com/un-ts/e
### Patch Changes - #243 `5bc8976` Thanks @JounQin! - fix: use `rspack-resolver` fork for pnp support Full Changelog: https://github.com/un-ts/eslint-
5bc8976 Thanks @JounQin! - fix: use rspack-resolver fork for pnp supportFull Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.7.0...v4.7.1
default should be last matched, module should be in mainFields.
#238 c8a388d Thanks @JounQin! - fix: change default conditions and mainFields
default should be last matched, module should be in mainFields.
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.6.1...v4.7.0
### Patch Changes - #211 `be9c3e8` Thanks @mrginglymus! - Fix enhanced-resolve dependency Full Changelog: https://github.com/un-ts/eslint-plugin-impor
So we decided to implement our own resolver that "just works". The new resolver is built upon the `enhanced-resolve` that implements the full Node.js
#209 46d2360 Thanks @SukkaW! - When eslint-plugin-import-x was forked from eslint-plugin-import, we copied over the default resolver (which is eslint-import-resolver-node) as well. However, this resolver doesn't supports exports in the package.json file, and the current maintainer of the eslint-import-resolver-node (@ljharb) doesn't have the time implementing this feature and he locked the issue https://github.com/import-js/eslint-plugin-import/issues/1810.
So we decided to implement our own resolver that "just works". The new resolver is built upon the enhanced-resolve that implements the full Node.js Resolver Algorithm. The new resolver only implements the import resolver interface v3, which means you can only use it with ESLint Flat config. For more details about the import resolver interface v3, please check out #192.
In the next major version of eslint-plugin-import-x, we will remove the eslint-import-resolver-node and use this new resolver by default. In the meantime, you can try out this new resolver by setting the import-x/resolver-next option in your eslint.config.js file:
// eslint.config.js
const eslintPluginImportX = require('eslint-plugin-import-x');
const { createNodeResolver } = eslintPluginImportX;
module.exports = {
plugins: {
'import-x': eslintPluginImportX,
},
settings: {
'import-x/resolver-next': [
// This is the new resolver we are introducing
createNodeResolver({
/**
* The allowed extensions the resolver will attempt to find when resolving a module
* By default it uses a relaxed extension list to search for both ESM and CJS modules
* You can customize this list to fit your needs
*
* @default ['.mjs', '.cjs', '.js', '.json', '.node']
*/
extensions?: string[];
/**
* Optional, the import conditions the resolver will used when reading the exports map from "package.json"
* By default it uses a relaxed condition list to search for both ESM and CJS modules
* You can customize this list to fit your needs
*
* @default ['default', 'module', 'import', 'require']
*/
conditions: ['default', 'module', 'import', 'require'],
// You can pass more options here, see the enhanced-resolve documentation for more details
// https://github.com/webpack/enhanced-resolve/tree/v5.17.1?tab=readme-ov-file#resolver-options
}),
// you can add more resolvers down below
require('eslint-import-resolver-typescript').createTypeScriptImportResolver(
/** options of eslint-import-resolver-typescript */
)
],
},
};
We do not plan to implement reading baseUrl and paths from the tsconfig.json file in this resolver. If you need this feature, please checkout eslint-import-resolver-typescript (also powered by enhanced-resolve), eslint-import-resolver-oxc (powered by oxc-resolver), eslint-import-resolver-next (also powered by oxc-resolver), or other similar resolvers.
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.5.1...v4.6.0
@voxpelli made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/198
#198 ac6d2e1 Thanks @voxpelli! - Fix #197 with missing types
#204 32e9b55 Thanks @privatenumber! - fix type-import and value-import merging when import-as is used
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.5.0...v4.5.1
We have also made a few breaking changes to the new resolver API design, so you can't use existing custom resolvers directly with import-x/resolver-ne…
#192 fbf639b Thanks @SukkaW! - The PR implements the new resolver design proposed in https://github.com/un-ts/eslint-plugin-import-x/issues/40#issuecomment-2381444266
eslint-plugin-import-x usersLike the ESLint flat config allows you to use js objects (e.g. import and require) as ESLint plugins, the new eslint-plugin-import-x resolver settings allow you to use js objects as custom resolvers through the new setting import-x/resolver-next:
// eslint.config.js
import { createTsResolver } from '#custom-resolver';
const { createOxcResolver } = require('path/to/a/custom/resolver');
const resolverInstance = new ResolverFactory({});
const customResolverObject = {
interfaceVersion: 3,
name: 'my-custom-eslint-import-resolver',
resolve(modPath, sourcePath) {
const path = resolverInstance.resolve(modPath, sourcePath);
if (path) {
return {
found: true,
path
};
}
return {
found: false,
path: null
}
};
};
module.exports = {
settings: {
// multiple resolvers
'import-x/resolver-next': [
customResolverObject,
createTsResolver(enhancedResolverOptions),
createOxcResolver(oxcOptions),
],
// single resolver:
'import-x/resolver-next': [createOxcResolver(oxcOptions)]
}
}
The new import-x/resolver-next no longer accepts strings as the resolver, thus will not be compatible with the ESLint legacy config (a.k.a. .eslintrc). Those who are still using the ESLint legacy config should stick with import-x/resolver.
In the next major version of eslint-plugin-import-x (v5), we will rename the currently existing import-x/resolver to import-x/resolver-legacy (which allows the existing ESLint legacy config users to use their existing resolver settings), and import-x/resolver-next will become the new import-x/resolver. When ESLint v9 (the last ESLint version with ESLint legacy config support) reaches EOL in the future, we will remove import-x/resolver-legacy.
We have also made a few breaking changes to the new resolver API design, so you can't use existing custom resolvers directly with import-x/resolver-next:
// When migrating to `import-x/resolver-next`, you CAN'T use legacy versions of resolvers directly:
module.exports = {
settings: {
// THIS WON'T WORK, the resolver interface required for `import-x/resolver-next` is different.
'import-x/resolver-next': [
require('eslint-import-resolver-node'),
require('eslint-import-resolver-webpack'),
require('some-custom-resolver')
];
}
}
For easier migration, the PR also introduces a compat utility importXResolverCompat that you can use in your eslint.config.js:
// eslint.config.js
import eslintPluginImportX, { importXResolverCompat } from 'eslint-plugin-import-x';
// or
const eslintPluginImportX = require('eslint-plugin-import-x');
const { importXResolverCompat } = eslintPluginImportX;
module.exports = {
settings: {
// THIS WILL WORK as you have wrapped the previous version of resolvers with the `importXResolverCompat`
'import-x/resolver-next': [
importXResolverCompat(require('eslint-import-resolver-node'), nodeResolveOptions),
importXResolverCompat(require('eslint-import-resolver-webpack'), webpackResolveOptions),
importXResolverCompat(require('some-custom-resolver'), { option1: true, option2: '' })
];
}
}
This is the new API design of the resolver interface:
export interface NewResolver {
interfaceVersion: 3;
name?: string; // This will be included in the debug log
resolve: (modulePath: string, sourceFile: string) => ResolvedResult;
}
// The `ResultNotFound` (returned when not resolved) is the same, no changes
export interface ResultNotFound {
found: false;
path?: undefined;
}
// The `ResultFound` (returned resolve result) is also the same, no changes
export interface ResultFound {
found: true;
path: string | null;
}
export type ResolvedResult = ResultNotFound | ResultFound;
You will be able to import NewResolver from eslint-plugin-import-x/types.
The most notable change is that eslint-plugin-import-x no longer passes the third argument (options) to the resolve function.
We encourage custom resolvers' authors to consume the options outside the actual resolve function implementation. You can export a factory function to accept the options, this factory function will then be called inside the eslint.config.js to get the actual resolver:
// custom-resolver.js
exports.createCustomResolver = (options) => {
// The options are consumed outside the `resolve` function.
const resolverInstance = new ResolverFactory(options);
return {
name: 'custom-resolver',
interfaceVersion: 3,
resolve(mod, source) {
const found = resolverInstance.resolve(mod, {});
// Of course, you still have access to the `options` variable here inside
// the `resolve` function. That's the power of JavaScript Closures~
}
}
};
// eslint.config.js
const { createCustomResolver } = require('custom-resolver')
module.exports = {
settings: {
'import-x/resolver-next': [
createCustomResolver(options)
];
}
}
This allows you to create a reusable resolver instance to improve the performance. With the existing version of the resolver interface, because the options are passed to the resolver function, you will have to create a resolver instance every time the resolve function is called:
module.exports = {
interfaceVersion: 2,
resolve(mod, source) {
// every time the `resolve` function is called, a new instance is created
// This is very slow
const resolverInstance = ResolverFactory.createResolver({});
const found = resolverInstance.resolve(mod, {});
},
};
With the factory function pattern, you can create a resolver instance beforehand:
exports.createCustomResolver = (options) => {
// `enhance-resolve` allows you to create a reusable instance:
const resolverInstance = ResolverFactory.createResolver({});
const resolverInstance = enhanceResolve.create({});
// `oxc-resolver` also allows you to create a reusable instance:
const resolverInstance = new ResolverFactory({});
return {
name: "custom-resolver",
interfaceVersion: 3,
resolve(mod, source) {
// the same re-usable instance is shared across `resolve` invocations.
// more performant
const found = resolverInstance.resolve(mod, {});
},
};
};
#184 bc4de89 Thanks @marcalexiei! - fix(no-cycle): improves the type declaration of the rule no-cycle’s maxDepth option
#184 bc4de89 Thanks @marcalexiei! - fix(first): improves the type declaration of the rule first's option
#184 bc4de89 Thanks @marcalexiei! - fix(no-unused-modules): improves the type declaration of the rule no-unused-modules’s missingExports option
#184 bc4de89 Thanks @marcalexiei! - fix(no-deprecated): improve error message when no description is available
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.4.3...v4.5.0
### Patch Changes - #187 `a428f82` Thanks @SukkaW! - Attach ecmaVersion and sourceType to parserOptions during parse Full Changelog: https://github.co
### Patch Changes - #181 `cc4ee65` Thanks @SukkaW! - Fix #144, read proper sourceType for both eslint flat config and legacy eslintrc config. Full Cha
@teidesu made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/169
9c58269 Thanks @teidesu! - Add new rule option checkTypedImports for extensions, backports https://github.com/import-js/eslint-plugin-import/pull/2817#171 9715220 Thanks @SukkaW! - Perf: avoid regexp during parser choosing
#171 9715220 Thanks @SukkaW! - Add extra guard for rule no-named-as-default. A few guards are borrowed from https://github.com/import-js/eslint-plugin-import/pull/3032, but we don't sync the rest of changes from upstream since we have already implemented a way more performant check.
#171 9715220 Thanks @SukkaW! - More test cases for no-named-export and no-defualt-export rule specifically with non-module sourceType
#171 9715220 Thanks @SukkaW! - Fix export when there is only one TSDeclareFunction (https://github.com/import-js/eslint-plugin-import/pull/3065)
#171 9715220 Thanks @SukkaW! - Prevent ExportMap's cache is being tainted by incompatible parser (e.g. old babel-eslint). The cache is now skipped w/ incompatible parsers, which might introduce performance impacts only for those who are using incompatible parsers. (https://github.com/import-js/eslint-plugin-import/pull/3062)
#171 9715220 Thanks @SukkaW! - Docs: fix a few typos here and there
#168 5de039c Thanks @hyoban! - Fixes https://github.com/un-ts/eslint-plugin-import-x/issues/167, the no-duplicates rule now allows co-existing inline type imports and namespace imports.
#171 9715220 Thanks @SukkaW! - Properly fix espree parser w/ ESLint Flat Config
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.3.1...v4.4.0
@AaronMoat made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/162
38d0081 Thanks @AaronMoat! - Fix issue where no-duplicates rule with prefer-inline incorrectly marks default type and named type imports as duplicatesFull Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.3.0...v4.3.1
@jjoselv made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/154
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.2.1...v4.3.0
@nchevsky made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/147
#148 d228129 Thanks @SukkaW! - Fix newline-after-import's considerComments options when linting require, backports https://github.com/import-js/eslint-plugin-import/pull/2952
#147 eca73ed Thanks @nchevsky! - Fix regression in rule no-unused-modules which would incorrectly initialize option src to [] instead of [process.cwd()], breaking file discovery.
#148 d228129 Thanks @SukkaW! - Fix no-duplicates for TypeScript, backports https://github.com/import-js/eslint-plugin-import/pull/3033
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.2.0...v4.2.1
@Zamiell made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/142
e5e4580 Thanks @SukkaW! - Fix https://github.com/nuxt/eslint/issues/494 by avoid importing from @typescript-eslint/typescript-estree.Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.1.1...v4.2.0
### Patch Changes - #133 `757ffa9` Thanks @SukkaW! - Fix #123 where the rule no-named-as-default would have confuse TypeScript namespace exports with
```ts import eslintPluginImportX from "eslint-plugin-import-x";
#122 cd52e86 Thanks @michaelfaith! - Add ESLint flat configuration presets. You can access them with:
import eslintPluginImportX from "eslint-plugin-import-x";
eslintPluginImportX.flatConfigs.recommended;
eslintPluginImportX.flatConfigs.react;
eslintPluginImportX.flatConfigs.typescript;
eslintPluginImportX.flatConfigs.electron;
#132 9948c78 Thanks @SukkaW! - Added no-rename-default that forbid importing a default export by a different name. Originally created by @whitneyit, ported by @SukkaW
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v4.0.0...v4.1.0
@merrywhether made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/127
4ba14da Thanks @SukkaW! - Use typescript-eslint v8. The minimum supported ESLint version is now >= 8.57.0 and the minimum required Node.js version is now 18.18.0.Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v3.1.0...v4.0.0
A new no-cycle-next rule is being implemented using the graph. It won't be backward compatible with the current rule no-cycle. The current no-cycle ru
#118 0307ff2 Thanks @silverwind! - Reverts #111. The introduction of SCC causes extra overhead that overcomes the early return it introduced.
A new no-cycle-next rule is being implemented using the graph. It won't be backward compatible with the current rule no-cycle. The current no-cycle rule will become no-cycle-legacy in the next major version.
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v3.0.1...v3.1.0
### Patch Changes - #109 `fe3121a` Thanks @SukkaW! - Make eslint-plugin-import-x overall faster by refactoring the ExportMap util - #111 `5cce946` Tha
#109 fe3121a Thanks @SukkaW! - Make eslint-plugin-import-x overall faster by refactoring the ExportMap util
#111 5cce946 Thanks @SukkaW! - Drastically improve no-cycle's performance by skipping unnecessary BFSes using Tarjan's SCC.
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v3.0.0...v3.0.1
Due to the nature of the fork, all eslint-plugin-import's git tags and releases have been copied over to eslint-plugin-import-x. This causes version c
#106 19f10aa Thanks @SukkaW! - eslint-plugin-import-x is a fork of eslint-plugin-import that aims to provide a more performant and more lightweight version of the original plugin.
Due to the nature of the fork, all eslint-plugin-import's git tags and releases have been copied over to eslint-plugin-import-x. This causes version conflicts when publishing new versions of eslint-plugin-import-x.
To prevent this, we have decided to publish a new major version of eslint-plugin-import-x that will not conflict with the original eslint-plugin-import's versions.
See also https://github.com/un-ts/eslint-plugin-import-x/issues/76
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v0.5.3...v3.0.0
@antfu made their first contribution in https://github.com/un-ts/eslint-plugin-import-x/pull/59
#101 c0cea7b Thanks @SukkaW! - Allow incorrect file path in extraneous deps check
#100 293fcf4 Thanks @SukkaW! - feat: webpack comment regex support webpackFetchPriority
#85 ded3e80 Thanks @kosmotema! - add languageOptions to ChildContext
#100 293fcf4 Thanks @SukkaW! - Allow empty chunk name when webpackMode: 'eager' is set; add suggestions to remove name in eager mode
Full Changelog: https://github.com/un-ts/eslint-plugin-import-x/compare/v0.3.1...v0.5.3
### Patch Changes - #93 `64bf1a6` Thanks @SukkaW! - fix: enable isolation parsing w/ typescript-eslint v8
### Patch Changes - #82 `e29ba7f` Thanks @unzico! - fix: cannot find module 'tslib'
### Minor Changes - #66 `49418a0` Thanks @JounQin! - chore(dep)!: drop eslint <8.56 support - #66 `49418a0` Thanks @JounQin! - feat!: upgrade @typescr
### Patch Changes - #67 `7a6145c` Thanks @JounQin! - fix: only add dependencies when no exported found
### Patch Changes - #64 `b858aee` Thanks @JounQin! - fix(export-map): incorrect internal namespaces info
Your coding agent can read these notes before it upgrades. Set up the MCP server →