Registry / testing / eslint-plugin-import-esm

eslint-plugin-import-esm

JSON →
library3.0.1jsnpmunverified

ESLint plugin v3.0.1 that enforces import/export paths to follow native ESM resolution by requiring explicit file extensions (e.g., '.mjs', '.js'). Works exclusively with ESLint v9+ flat config and is fully ESM. Released as stable; active development. Unlike eslint-plugin-import which validates path existence, this focuses on explicit-extension rule to prevent ambiguous ESM resolution. Automatically fixable via --fix.

npm install eslint-plugin-import-esm
INSTALL
IMPORT
SIG · ESLINT-PLUGIN-IMPO
E
eslint-plugin-import-esm
testingjavascriptv3.0.1
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default
import importEsmPlugin from 'eslint-plugin-import-esm'
const importEsmPlugin = require('eslint-plugin-import-esm')
ESM-only package; requires native ES module import syntax (not CJS).
configs.recommended
importEsmPlugin.configs.recommended
require('eslint-plugin-import-esm').configs.recommended
Access via the default import object; using require() will fail since plugin is ESM-only.
explicit-extension rule
'import-esm/explicit-extension': ['error', { extension: '.mjs' }]
'explicit-extension': 'error'
Rule name must be prefixed with 'import-esm/'. Requires configuration object with extension property.

Configures ESLint v9 flat config with recommended preset and explicit .mjs extension rule.

import { defineConfig } from "eslint/config"; import importEsmPlugin from 'eslint-plugin-import-esm'; export default defineConfig([ importEsmPlugin.configs.recommended, { rules: { 'import-esm/explicit-extension': ['error', { extension: '.mjs' }] } } ]);
Debug
Known issues
breakingPlugin requires ESLint v9+ with flat config; does not support .eslintrc or legacy config.
fix
Migrate to ESLint flat config. Use defineConfig from 'eslint/config' and apply plugin configs as shown.
affects: >=3.0.0
breakingPlugin is ESM-only; cannot be loaded with require().
fix
Use import statement in an ESM context (module type in package.json or .mjs file).
affects: >=3.0.0
breakingNode.js >= 18.0.0 required; does not work on older versions.
fix
Upgrade Node.js to version 18.0.0 or newer.
affects: >=3.0.0
gotchaRule name must be prefixed with 'import-esm/' when configuring in rules object.
fix
Use 'import-esm/explicit-extension' instead of 'explicit-extension'.
affects: >=3.0.0
gotchaThe 'explicit-extension' rule requires an option object with 'extension' property. Default extension is '.js' if not specified.
fix
Provide configuration: ['error', { extension: '.mjs' }] or ['warn', { extension: '.js' }].
affects: >=3.0.0
Errors
Common errors & fixes
Error: Cannot find module 'eslint-plugin-import-esm'
Missing dependency or incorrect installation.
fix
Run 'npm install eslint-plugin-import-esm --save-dev' and ensure it's in package.json dependencies.
Error: Plugin could not be loaded: eslint-plugin-import-esm. It requires ESLint v9 or higher.
Using ESLint version below 9.0.0.
fix
Update ESLint to v9+ with 'npm install eslint@9 --save-dev'.
Error [ERR_REQUIRE_ESM]: require() of ES Module ... from ... not supported.
Attempting to load the plugin with require() instead of import.
fix
Use 'import importEsmPlugin from 'eslint-plugin-import-esm'' in an ESM context.
Invalid configuration: Rule 'explicit-extension' not found.
Using the rule name without the 'import-esm/' prefix.
fix
Use 'import-esm/explicit-extension' in the rules object.
Upgrade
Version history
3.0.1latest on npm
Audit
Dependencies
eslintrequiredPeer dependency; plugin requires ESLint v9+ flat config system
Agent activity
2 hits · last 30 days
node
2
Resources
eslint-plugin-import-esm — npm install eslint-plugin-import-esm · libregistry