eslint-plugin-import-typescript

An ESLint plugin that auto-fixes relative imports to absolute imports. Support baseUrl and paths config in TSConfig.

A typical project starts out using relative imports, but once it has gotten bigger, the relative imports grows longer and messier. This plugin is useful when you want to migrate the relative imports to absolute imports, and keep it that way through auto-fixes.

Built on Jeff Chen's Absolute Imports plugin.

Prerequisites

You must define baseUrl and paths (optional) in either tsconfig.json or jsconfig.json.

Setup

  • npm i --save-dev eslint-plugin-import-typescript
  • Add eslint-plugin-import-typescript to your eslint plugins section
  • Add one of the supported rules below to your eslint rules section.

Example:

  plugins: ['eslint-plugin-import-typescript'],
  rules: [
    'import-typescript/no-relative-parent-imports': ['error'],
  ]

Rules

Rule Description
no-relative-imports Autofix relative imports to absolute import or paths import
no-relative-parent-imports Autofix relative parent imports to absolute import or paths import

The rule no-relative-parent-imports is useful when you still want to allow relative import within the same folder but disallow relative import in a parent folder. It's similar to eslint-plugin-import/no-relative-parent-imports rule, except it supports auto-fix. It is the recommended rule.

The rules supports baseUrl and paths, and will prioritize paths import if it exists. It's possible to disable one of the rewritting rules by setting the corresponding options

Options Description
onlyAbsoluteImport Ignore paths config if it exists
onlyPathsImport Do not autofix absolute import. Only fix import if there is a path matching paths config

Example:

    'import-typescript/no-relative-parent-imports': [
        'error', { onlyAbsoluteImport: true } 
    ],

Related readings

While baseUrl and paths are understood and supported by Typescript, it doesn't rewrite the import paths when it compiles the typescript code to javascript. Belows are some related readings and library to get typescript absolute imports works:

Contributions

Contributions are welcome!

License

MIT