Skip to content

kubit-ui/eslint-plugin-no-index-import

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

eslint-plugin-no-index-import

This ESLint plugin disallows imports from index files to enforce better module structure and avoid potential issues with circular dependencies.

Installation

To install the plugin, you need to have ESLint already installed in your project. If you don't have ESLint installed, you can install it using npm or yarn:

npm install eslint --save-dev
# or
yarn add eslint --dev

Then, install the eslint-plugin-no-index-import plugin:

npm install @kubit-ui-web/eslint-plugin-no-index-import --save-dev
# or
yarn add @kubit-ui-web/eslint-plugin-no-index-import --dev

Usage

To use the plugin, you need to add it to your ESLint configuration file (e.g., .eslintrc.js).

Basic Configuration

Add no-index-import to the plugins array and configure the rule in the rules section:

module.exports = {
  // Other ESLint configurations...
  plugins: ['@kubit-ui-web/no-index-import'],
  rules: {
    '@kubit-ui-web/no-index-import/no-index-import': 'error',
  },
};

Advanced Configuration

You can also configure aliases and ignore specific imports:

module.exports = {
  // Other ESLint configurations...
  plugins: ['@kubit-ui-web/no-index-import'],
  rules: {
    '@kubit-ui-web/no-index-import/no-index-import': [
      'error',
      {
        aliases: {
          '@components': './src/components',
          '@utils': './src/utils',
        },
        ignoreImports: ['@/components/loader', '@/types/customToken'],
      },
    ],
  },
};

Example Configuration

Here is an example of a complete ESLint configuration file with the no-index-import plugin:

module.exports = {
  env: {
    browser: true,
    es2021: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:react/recommended',
    'plugin:@typescript-eslint/recommended',
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 12,
    sourceType: 'module',
  },
  plugins: [
    'react',
    '@typescript-eslint',
    '@kubit-ui-web/no-index-import/no-index-import',
  ],
  rules: {
    '@kubit-ui-web/no-index-import/no-index-import': [
      'error',
      {
        aliases: {
          '@components': './src/components',
          '@utils': './src/utils',
        },
        ignoreImports: ['@/components/loader', '@/types/customToken'],
      },
    ],
  },
};

Rule Details

This rule disallows importing from index files or directories containing an index file. It helps to enforce better module structure and avoid potential issues with circular dependencies.

Options

  • aliases: An object where keys are alias names and values are the corresponding paths.
  • ignoreImports: An array of import paths to ignore.

Example

Given the following project structure:

src/
  components/
    index.ts
    button.ts
  utils/
    index.ts
    logger.ts
  index.ts

The following imports would be disallowed:

import { Button } from '@/components'; // Disallowed
import { Logger } from '@/utils'; // Disallowed

But the following imports would be allowed:

import { Button } from '@/components/button'; // Allowed
import { Logger } from '@/utils/logger'; // Allowed

Contributing

If you have any ideas, bug reports, or feature requests, feel free to open an issue or submit a pull request. We welcome contributions from the community and are happy to help with any questions you may have.

About

An ESLint plugin to disallow imports from index files.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published