Reports:
import
ed or require
ed from other modules in the same projectIn order for this plugin to work, one of the options missingExports
or unusedExports
must be enabled (see "Options" section below). In the future, these options will be enabled by default (see https://github.com/import-js/eslint-plugin-import/issues/1324)
Example:
"rules: {
...otherRules,
"import/no-unused-modules": [1, {"unusedExports": true}]
}
This rule takes the following option:
missingExports
: if true
, files without any exports are reported (defaults to false
)unusedExports
: if true
, exports without any static usage within other modules are reported (defaults to false
)src
: an array with files/paths to be analyzed. It only applies to unused exports. Defaults to process.cwd()
, if not providedignoreExports
: an array with files/paths for which unused exports will not be reported (e.g module entry points in a published package)const class MyClass { /*...*/ }
function makeClass() { return new MyClass(...arguments) }
export default function () { /*...*/ }
export const foo = function () { /*...*/ }
export { foo, bar }
export { foo as bar }
given file-f:
import { e } from 'file-a'
import { f } from 'file-b'
import * as fileC from 'file-c'
export { default, i0 } from 'file-d' // both will be reported
export const j = 99 // will be reported
and file-d:
export const i0 = 9 // will not be reported
export const i1 = 9 // will be reported
export default () => {} // will not be reported
and file-c:
export const h = 8 // will not be reported
export default () => {} // will be reported, as export * only considers named exports and ignores default exports
and file-b:
import two, { b, c, doAnything } from 'file-a'
export const f = 6 // will not be reported
and file-a:
const b = 2
const c = 3
const d = 4
export const a = 1 // will be reported
export { b, c } // will not be reported
export { d as e } // will not be reported
export function doAnything() {
// some code
} // will not be reported
export default 5 // will not be reported
Exports from files listed as a main file (main
, browser
, or bin
fields in package.json
) will be ignored by default. This only applies if the package.json
is not set to private: true
If you don't mind having unused files or dead code within your codebase, you can disable this rule