Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/docs/rules/no-internal-modules.md
829 views

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 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:

/** * 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:

/** * 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:

/** * 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:

/** * in my-project/entry.js */ import 'source-map-support'; import { getUser } from '../actions'; export * from 'source-map-support'; export { getUser } from '../actions';