ESLint сортирует импорт по имени пакета

#typescript #eslint #typescript-eslint

Вопрос:

Я пытаюсь отсортировать свой импорт по имени пакета, но, похоже, он не поддерживается на основе того, что доступно в документах.

Есть ли способ, чтобы это работало?

 import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
 

Приведенный выше код завершается с ошибкой, поскольку он хочет, чтобы BrowserModule находился в первой строке. Но я хочу, чтобы это считалось правильным, поскольку я хочу упорядочивать по имени пакета.

Вот моя конфигурация ESLint.

 "sort-imports": [
            "error",
            {
                "ignoreCase": true,
                "ignoreDeclarationSort": false,
                "ignoreMemberSort": false,
                "memberSyntaxSortOrder": [
                        "none",
                        "all",
                        "multiple",
                        "single"
                ],
                "allowSeparatedGroups": true
            }
        ],
 

Ответ №1:

Базовое правило ESLint просто не поддерживает его — оно сортирует по имени.

Вы можете использовать другое правило сортировки, подобное приведенному здесь .

https://www.npmjs.com/package/eslint-plugin-simple-import-sort

Ответ №2:

Я использую eslint-plugin-import, и он поддерживает такую функциональность. Публикую мою конфигурацию для справки. Это обеспечило бы, чтобы импорт React всегда был первым, затем импорт, начинающийся с @my_org , а затем остальное настраивается на основе порядка групп

 "import/order": [
      "error",
      {
        "alphabetize": {
          caseInsensitive: true,
          order: "asc",
        },
        "groups": ["external", "builtin", "parent", ["sibling", "index"]],
        "newlines-between": "never",
        "pathGroups": [
          {
            group: "external",
            pattern: "react",
            position: "before",
          },
          {
            group: "external",
            pattern: "@my_org/**",
            position: "after",
          },
        ],
        "pathGroupsExcludedImportTypes": ["builtin"],
      },
    ],