eslint-plugin-import-alias
eslint-plugin-import-alias copied to clipboard
[Feature request]: Rewrite aliases to other aliases
I'm using Nuxt, and Nuxt maps the "root" directory to ~~. Because of this mapping, VSCode will often autocomplete paths to, say, a script file, to something like:
import { Foo } from '~~/legacy/scripts/Foo'
However, to reduce verbosity in commonly-used paths, I have aliases like ~js to refer to ~~/legacy/scripts.
What I would like is the ability to rewrite not just relative paths to alias paths, but alias paths to other alias paths.
So, on save (or eslint --fix), I would like the above re-written to:
import { Foo } from '~js/Foo'
Is it possible to include more customization into what is re-written? This seems somewhat related to https://github.com/dword-design/eslint-plugin-import-alias/issues/133, in that some customization / filters would be nice.
Any proposal on how to solve this? I had the case that I have multiple aliases and one of them is a subpath of another one and the plugin should always select the inner most one but not sure if that totally solves the issue.
Great plugin @dword-design :)
+1 to this feature too although it's not a big deal for me at the moment.
Currently it seems like the plugin looks for the first match found in the alias config?
E.g. if this gets automatically imported by VSCode:
import { TextInputWithLabel } from "../../../ui/inputs/TextInput";
And this is my config:
"@dword-design/import-alias/prefer-alias": [
"error",
{
alias: {
"@": "./src",
"@ui": "./src/components/ui",
},
},
],
Then @dword-design/import-alias/prefer-alias will convert the import into this:
import { TextInputWithLabel } from "@/components/ui/inputs/TextInput";
Versus if this is my config:
"@dword-design/import-alias/prefer-alias": [
"error",
{
alias: {
"@ui": "./src/components/ui",
"@": "./src",
},
},
],
Then the relative import will be converted into this:
import { TextInputWithLabel } from "@ui/inputs/TextInput";
(Although if the import is already @/components/ui/inputs/TextInput, the plugin won't complain even with this second config)
So one approach could be to just explicitly make this the rule - precedence is determined by order of aliases in the config - and the plugin could check alias imports to make sure there's not an earlier alias in the list that matches the import path.