You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.8 KiB
132 lines
2.8 KiB
# import/no-internal-modules |
|
|
|
Use this rule to prevent importing the submodules of other modules. |
|
|
|
## Rule Details |
|
|
|
This rule has two mutally exclusive options that are arrays of [minimatch/glob patterns](https://github.com/isaacs/node-glob#glob-primer) patterns: |
|
|
|
- `allow` that include paths and import statements that can be imported with reaching. |
|
- `forbid` that exclude paths and import statements that can be imported with reaching. |
|
|
|
### Examples |
|
|
|
Given the following folder structure: |
|
|
|
``` |
|
my-project |
|
├── actions |
|
│ └── getUser.js |
|
│ └── updateUser.js |
|
├── reducer |
|
│ └── index.js |
|
│ └── user.js |
|
├── redux |
|
│ └── index.js |
|
│ └── configureStore.js |
|
└── app |
|
│ └── index.js |
|
│ └── settings.js |
|
└── entry.js |
|
``` |
|
|
|
And the .eslintrc file: |
|
``` |
|
{ |
|
... |
|
"rules": { |
|
"import/no-internal-modules": [ "error", { |
|
"allow": [ "**/actions/*", "source-map-support/*" ], |
|
} ] |
|
} |
|
} |
|
``` |
|
|
|
The following patterns are considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import { settings } from './app/index'; // Reaching to "./app/index" is not allowed |
|
import userReducer from './reducer/user'; // Reaching to "./reducer/user" is not allowed |
|
import configureStore from './redux/configureStore'; // Reaching to "./redux/configureStore" is not allowed |
|
|
|
export { settings } from './app/index'; // Reaching to "./app/index" is not allowed |
|
export * from './reducer/user'; // Reaching to "./reducer/user" is not allowed |
|
``` |
|
|
|
The following patterns are NOT considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import 'source-map-support/register'; |
|
import { settings } from '../app'; |
|
import getUser from '../actions/getUser'; |
|
|
|
export * from 'source-map-support/register'; |
|
export { settings } from '../app'; |
|
``` |
|
|
|
Given the following folder structure: |
|
|
|
``` |
|
my-project |
|
├── actions |
|
│ └── getUser.js |
|
│ └── updateUser.js |
|
├── reducer |
|
│ └── index.js |
|
│ └── user.js |
|
├── redux |
|
│ └── index.js |
|
│ └── configureStore.js |
|
└── app |
|
│ └── index.js |
|
│ └── settings.js |
|
└── entry.js |
|
``` |
|
|
|
And the .eslintrc file: |
|
``` |
|
{ |
|
... |
|
"rules": { |
|
"import/no-internal-modules": [ "error", { |
|
"forbid": [ "**/actions/*", "source-map-support/*" ], |
|
} ] |
|
} |
|
} |
|
``` |
|
|
|
The following patterns are considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import 'source-map-support/register'; |
|
import getUser from '../actions/getUser'; |
|
|
|
export * from 'source-map-support/register'; |
|
export getUser from '../actions/getUser'; |
|
``` |
|
|
|
The following patterns are NOT considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import 'source-map-support'; |
|
import { getUser } from '../actions'; |
|
|
|
export * from 'source-map-support'; |
|
export { getUser } from '../actions'; |
|
```
|
|
|