0.1.15 • Published 7 months ago

eslint-plugin-re-export-sort v0.1.15

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

eslint-plugin-re-export-sort

💫 Plugin for sorting re-export. This plugin only apply to re-export. 💫 ⚠️ plugin does not sort export specifiers in re-export statements. ⚠️

Example

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";

Installation

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

Usage

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"
  }
}

Sort order

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.

Options

spaceBetweenGroup

{
  "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";

order

{
  "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";

License

MIT

0.1.15

7 months ago

0.1.14

7 months ago

0.1.13

7 months ago

0.1.12-0

7 months ago

0.1.12

7 months ago

0.1.11

7 months ago

0.1.10

7 months ago

0.1.9

7 months ago

0.1.8

7 months ago

0.1.7

7 months ago

0.1.6

7 months ago

0.1.5

7 months ago

0.1.4

7 months ago

0.1.3

7 months ago

0.1.2

7 months ago

0.1.1

7 months ago

0.1.0

7 months ago

0.0.7

7 months ago

0.0.6

7 months ago

0.0.5

7 months ago

0.0.4

7 months ago

0.0.3

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago