eslint-plugin-no-imports

2.0.2 • Public • Published

eslint-plugin-no-imports

npm NPM total downloads

An eslint rule to protect your modules from bad imports. It prohibits writing imports that go beyond the directories specified by you.

Installation

yarn add -D eslint-plugin-no-imports

or

npm install -D eslint-plugin-no-imports

Description

Below is a file structure where packages/brand and packages/analytics are independent modules from the project.

They can only import files that are within the same directories. Going beyond the specified directories is prohibited.

For example, the brand/index.js file can import brandFile.js but cannot import srcFile.js or analytics/*.js files, because it is outside the brand directory.

└── src/
    ├── srcFile.js
    └── packages/
        ├── brand/
        │   ├── index.js
        │   └── brandFile.js
        └── analytics/
            └── ...

How to use:

Add to your .eslintrc:

"plugins": ["no-imports"],
"rules": {
    "no-imports/outside-special-folder": [
      'error',
      {
        directories: ['./src/packages/brand', './src/packages/analytics'],
        aliases: [{ alias: 'app', pathToFolder: './src' }, { alias: '@', pathToFolder: './modules' }],
        ignore: ['./bin/**/*'],
      },
    ],
}

Examples:

/brand/index.js

✅ Good - These files are located in the `brand` directory. Everything is fine here. 
import data from './brandData';
import utils from 'alias/packages/brand/utils';

❌ Error - These files are outside the `brand` directory, so we will get an error.  
import constants from '../packagesConstants';
import utils from '../../srcUtils';
import data from '@/data';

If you add an ignore section as shown in (How to use), eslint will not complain about these directories/files.

/brand/index.js

✅ Good - The `bin` directory is located in the ignore section. Everything is fine here. 
import binConstaints from '../../../bin/constaints';

Windows

When specifying a folder path in the sections: directories, ignore, aliases - using escape characters is prohibited. Otherwise, it will break the logic for Windows users.

Options

Name Required Description
directories + List of directories we are monitoring. If an import goes beyond the established directory, we receive an error.
ignore - List of directories that are exceptions.
aliases - If you have imports specified via aliases, you need to specify them here as well.

Package Sidebar

Install

npm i eslint-plugin-no-imports

Weekly Downloads

17

Version

2.0.2

License

MIT

Unpacked Size

8.99 kB

Total Files

7

Last publish

Collaborators

  • r1on