A plugin for ESLint, to force use paths aliases according to paths
option config in tsconfig.json
or jsconfig.json
, instead of relative imports.
Zero config, plug and play design.
Current rule supports auto fix with eslint --fix
, so you may automate paths correction.
Unlike other plugins like eslint-plugin-import-alias and eslint-plugin-import-alias whose introduce their own aliases, current plugin is just use aliases config from tsconfig/jsconfig.
With eslint-plugin-paths
you have one source of truth - your tsconfig.json
file (or jsconfig.json
in case you use vanilla javascript).
TODO: We have a ticket, to implement an option to deprecate specific paths for case you want to convert aliases back to relative paths. So you will just add alias to deprecation list, then run eslint --fix
and unnecessary aliases will be inverted back to paths. Simple and powerful for aliases management.
Install package with npm install -D eslint-plugin-paths
, then update eslint config
{
"plugins": [
"eslint-plugin-paths",
],
"rules": {
"paths/alias": "error"
}
}
If you have tsconfig.json
with config below
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@foo/*": ["src/foo/*"],
"@bar/*": ["src/bar/*"]
}
}
}
then code below will be valid
// src/index.ts
import foo from '@foo';
import barZ from '@bar/x/y/z';
import bazZ from './baz/x/y/z';
and this code will be invalid
// src/index.ts
import foo from './foo';
import barZ from './bar/x/y/z';
Provide path to json file with a compiler config.
When not set, used tsconfig.json
from root directory if exists or jsconfig.json
if not.
You can support the project to help it maintain independence and high quality:
Also, you can donate to us to vote with money for goal prioritization, to add some feature or fix some bug as soon as possible. Just donate with any method below, then leave transaction details in issue comments, or send email to contact@vitonsky.net with issue number or feature request description. For significant donations, we will start work on your request as soon as possible.