Files
react-native-devtools-frontend/node_modules/eslint-plugin-import/docs/rules/named.md
T
Tim van der Lippe fdbd42e2f8 Add eslint-import-plugin to node_modules
Will be used to make sure no default exports are in DevTools.

The PRESUBMIT.py has been updated to skip running the formatting check
if node_modules files are affected, to workaround crbug.com/1068198.

DISABLE_THIRD_PARTY_CHECK=Add plugin to node_modules

Bug: 1068198
Change-Id: I04d4dc813daa01099f21d40edf47aaefcc0b045f
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2135610
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2020-04-07 14:27:34 +00:00

2.2 KiB

import/named

Verifies that all named imports are part of the set of named exports in the referenced module.

For export, verifies that all named exports exist in the referenced module.

Note: for packages, the plugin will find exported names from jsnext:main, if present in package.json. Redux's npm module includes this key, and thereby is lintable, for example.

A module path that is ignored or not unambiguously an ES module will not be reported when imported. Note that type imports and exports, as used by Flow, are always ignored.

Rule Details

Given:

// ./foo.js
export const foo = "I'm so foo"

The following is considered valid:

// ./bar.js
import { foo } from './foo'

// ES7 proposal
export { foo as bar } from './foo'

// node_modules without jsnext:main are not analyzed by default
// (import/ignore setting)
import { SomeNonsenseThatDoesntExist } from 'react'

...and the following are reported:

// ./baz.js
import { notFoo } from './foo'

// ES7 proposal
export { notFoo as defNotBar } from './foo'

// will follow 'jsnext:main', if available
import { dontCreateStore } from 'redux'

Settings

import/ignore can be provided as a setting to ignore certain modules (node_modules, CoffeeScript, CSS if using Webpack, etc.).

Given:

# .eslintrc (YAML)
---
settings:
  import/ignore:
    - node_modules  # included by default, but replaced if explicitly configured
    - *.coffee$     # can't parse CoffeeScript (unless a custom polyglot parser was configured)

and

# ./whatever.coffee
exports.whatever = (foo) -> console.log foo

then the following is not reported:

// ./foo.js

// can't be analyzed, and ignored, so not reported
import { notWhatever } from './whatever'

When Not To Use It

If you are using CommonJS and/or modifying the exported namespace of any module at runtime, you will likely see false positives with this rule.

Further Reading