💫 Plugin for sorting re-export. This plugin only apply to re-export. 💫
export * from "./List";
export type { ListProps } from "./List";
export { default as List } from "./List";
export * from "./ListItem";
export type { ListItemProps } from "./ListItem";
export { default as ListItem } from "./ListItem";
export * from "./ListItemAvatar";
export type { ListItemAvatarProps } from "./ListItemAvatar";
export { default as ListItemAvatar } from "./ListItemAvatar";
export * from "./Menu";
export type { MenuProps } from "./Menu";
export { default as Menu } from "./Menu";
export * from "./MenuItem";
export type { MenuItemProps } from "./MenuItem";
export { default as MenuItem } from "./MenuItem";
⬇️
export type { ListProps } from "./List";
export type { ListItemProps } from "./ListItem";
export type { ListAvatarProps } from "./ListItemAvatar";
export type { MenuProps } from "./Menu";
export type { MenuItemProps } from "./MenuItem";
export * from "./List";
export * from "./ListItem";
export * from "./ListItemAvatar";
export * from "./Menu";
export * from "./MenuItem";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";
export { default as ListItemAvatar } from "./ListItemAvatar";
export { default as Menu } from "./Menu";
export { default as MenuItem } from "./MenuItem";
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-re-export-sort
:
npm install eslint-plugin-re-export-sort --save-dev
Add re-export-sort
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:
{
"plugins": ["re-export-sort"]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"re-export-sort/exports": "error"
}
}
First group, then sort alphabetically.
The default group order is TypeReExport
first , followed by ExportAllDeclaration
, and ExportNamedDeclaration
last.
TypeReExport
=>export type { typeSpecifier } from 'source';
ExportAllDeclaration
=>export * from 'source';
ExportNamedDeclaration
=>export { specifier } from 'source';
Once grouping finished, then source part(string after from
) within each group will be sorted alphabetically.
{
"rules": {
"re-export-sort/exports": [
"error",
{
"spaceBetweenGroup": "boolean"
}
]
}
}
if spaceBetweenGroup is false
, /n
between group are not injected.
default value is true
if set true (default)
export * from "./List";
export type { ListProps } from "./List";
export { default as List } from "./List";
export * from "./ListItem";
export type { ListItemProps } from "./ListItem";
export { default as ListItem } from "./ListItem";
⬇️
export type { ListProps } from "./List";
export type { ListItemProps } from "./ListItem";
export * from "./List";
export * from "./ListItem";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";
if set false
export * from "./List";
export type { ListProps } from "./List";
export { default as List } from "./List";
export * from "./ListItem";
export type { ListItemProps } from "./ListItem";
export { default as ListItem } from "./ListItem";
⬇️
export type { ListProps } from "./List";
export type { ListItemProps } from "./ListItem";
export * from "./List";
export * from "./ListItem";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";
{
"rules": {
"re-export-sort/exports": [
"error",
{
"order": ["type", "all", "name"]
}
]
}
}
The order option allows you to customize the sort order. The default is ["type", "all", "name"]
.
example
type
=>export type { typeSpecifier } from 'source';
all
=>export * from 'source';
name
=>export { specifier } from 'source';
if set ["all", "name", "type"]
export * from "./List";
export type { ListProps } from "./List";
export { default as List } from "./List";
export * from "./ListItem";
export type { ListItemProps } from "./ListItem";
export { default as ListItem } from "./ListItem";
⬇️
export * from "./List";
export * from "./ListItem";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";
export type { ListProps } from "./List";
export type { ListItemProps } from "./ListItem";
if set ["all", "type", "name"]
export * from "./List";
export type { ListProps } from "./List";
export { default as List } from "./List";
export * from "./ListItem";
export type { ListItemProps } from "./ListItem";
export { default as ListItem } from "./ListItem";
⬇️
export * from "./List";
export * from "./ListItem";
export type { ListProps } from "./List";
export type { ListItemProps } from "./ListItem";
export { default as List } from "./List";
export { default as ListItem } from "./ListItem";