💫 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-devNext, install eslint-plugin-re-export-sort:
npm install eslint-plugin-re-export-sort --save-devAdd 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";