Sha256: a4f1dacb1e7dbe1cb47316346958b6c0391f11610583f2f650375f5e1b725f8d

Contents?: true

Size: 1.87 KB

Versions: 49

Compression:

Stored size: 1.87 KB

Contents

# import/unambiguous

<!-- end auto-generated rule header -->

Warn if a `module` could be mistakenly parsed as a `script` by a consumer leveraging
[Unambiguous JavaScript Grammar] to determine correct parsing goal.

Will respect the [`parserOptions.sourceType`] from ESLint config, i.e. files parsed
as `script` per that setting will not be reported.

This plugin uses [Unambiguous JavaScript Grammar] internally to decide whether
dependencies should be parsed as modules and searched for exports matching the
`import`ed names, so it may be beneficial to keep this rule on even if your application
will run in an explicit `module`-only environment.

## Rule Details

For files parsed as `module` by ESLint, the following are valid:

```js
import 'foo'
function x() { return 42 }
```

```js
export function x() { return 42 }
```

```js
(function x() { return 42 })()
export {} // simple way to mark side-effects-only file as 'module' without any imports/exports
```

...whereas the following file would be reported:

```js
(function x() { return 42 })()
```

## When Not To Use It

If your application environment will always know via [some other means](https://github.com/nodejs/node-eps/issues/13)
how to parse, regardless of syntax, you may not need this rule.

Remember, though, that this plugin uses this strategy internally, so if you were
to `import` from a module with no `import`s or `export`s, this plugin would not
report it as it would not be clear whether it should be considered a `script` or
a `module`.

## Further Reading

 - [Unambiguous JavaScript Grammar]
 - [`parserOptions.sourceType`]
 - [node-eps#13](https://github.com/nodejs/node-eps/issues/13)

[`parserOptions.sourceType`]: https://eslint.org/docs/user-guide/configuring#specifying-parser-options
[Unambiguous JavaScript Grammar]: https://github.com/nodejs/node-eps/blob/HEAD/002-es-modules.md#32-determining-if-source-is-an-es-module

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
immosquare-cleaner-0.1.60 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.59 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.58 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.57 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.56 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.55 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.54 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.53 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.52 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.51 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.50 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.49 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.48 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.47 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.46 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.45 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.44 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.43 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.42 node_modules/eslint-plugin-import/docs/rules/unambiguous.md
immosquare-cleaner-0.1.41 node_modules/eslint-plugin-import/docs/rules/unambiguous.md