Git Product home page Git Product logo

eslint-plugin-re-export-sort's Introduction

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

eslint-plugin-re-export-sort's People

Contributors

shinhyogeun95 avatar

Stargazers

PARK MINJI avatar Harry avatar

Watchers

kenny.io avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.