Skip to content

Instantly share code, notes, and snippets.

@luisramirezdev
Last active August 30, 2021 18:33
Show Gist options
  • Save luisramirezdev/2090b1dbea12d1dd777ff448df91759b to your computer and use it in GitHub Desktop.
Save luisramirezdev/2090b1dbea12d1dd777ff448df91759b to your computer and use it in GitHub Desktop.
ESLitn order imports by groups on TypeScript

Dependencies

Install

VSCode plugins:

Project dependencies:

npm install eslint eslint-config-prettier eslint-plugin-prettier eslint-plugin-import-helpers  --save-dev

Config

The module "import-helpers/order-imports" uses regex for search imports, I created five groups with order:

  1. "@nestjs" dependencies
  2. "typeorm" dependencies
  3. "@shared" import alias (eg. ./src/modules/../..)
  4. "module" and "absolute" config predefined by plugin "import-helpers/order-imports"
...
"import-helpers/order-imports": [
            "warn",
            {
                "newlinesBetween": "always",
                "groups": [
                    "/@nestjs.*/",
                    "/typeorm.*/",
                    "/@shared.*/",
                    [
                        "module"
                    ],
                    [
                        "absolute"
                    ]
                ],
                "alphabetize": {
                    "order": "asc",
                    "ignoreCase": true
                }
            }
        ]
...

Save document

You can configure your VSCode for format document with Prettier when you save doument.

{
"parser": "@typescript-eslint/parser",
"extends": [
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint", // add rules of prettier to eslint
"plugin:prettier/recommended" // add plugin for integrate eslint with prettier
],
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"eslint-plugin-import-helpers"
],
"rules": {
"no-console": "off",
"max-len": [
"warn",
{
"code": 120
}
],
"@typescript-eslint/ban-ts-ignore": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"import-helpers/order-imports": [
"warn",
{
"newlinesBetween": "always",
"groups": [
"/@nestjs.*/",
"/typeorm.*/",
"/@shared.*/",
[
"module"
],
[
"absolute"
]
],
"alphabetize": {
"order": "asc",
"ignoreCase": true
}
}
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment