ESLint rule that sorts exports *
with autofix enabled
You'll first need to install ESLint:
$ npm i eslint --save-dev
$ yarn add eslint --dev
$ pnpm add -D eslint
Next, install eslint-plugin-sort-export-all
:
$ npm install eslint-plugin-sort-export-all --save-dev
$ yarn add eslint-plugin-sort-export-all --dev
$ pnpm add -D eslint-plugin-sort-export-all
Note: If you installed ESLint globally (using the -g
flag) then you must also install eslint-plugin-sort-export-all
globally.
Add sort-export-all
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:
{
"plugins": ["sort-export-all"]
}
Then configure the rule under the rules section.
{
"rules": {
"sort-export-all/sort-export-all": "warn"
}
}
Or enable it with defaults
{
"extends": ["plugin:sort-export-all/recommended"]
}
Often it makes sense to enable sort-export-all
only for certain files/directories. For cases like that, use override key of eslint config:
{
"plugins": ["sort-export-all"],
"rules": {
"sort-export-all/sort-export-all": "off"
},
"overrides": [
{
"files": ["src/**/index.{ts,js}"],
"rules": {
"sort-export-all/sort-export-all": "error"
}
}
]
}
If you use TypeScript, make sure to use @typescript-eslint/parser as parser for better compatability.
-
The 1st option is
"asc"
or"desc"
."asc"
(default) - enforce properties to be in ascending order."desc"
- enforce properties to be in descending order. -
The 2nd option is an object which has 3 properties.
caseSensitive
- iftrue
, enforce properties to be in case-sensitive order. Default istrue
.natural
- iftrue
, enforce properties to be in natural order. Default is false. Natural Order compares strings containing a combination of letters and numbers in the way a human being would sort. It basically sorts numerically, instead of sorting alphabetically. So the number 10 comes after the number3
in Natural Sorting.Standard sorting: Natural order sorting: img1.png img1.png img10.png img2.png img12.png img10.png img2.png img12.png
The default config is
[
"warn",
"asc",
{
caseSensitive: true,
natural: false,
},
];