Как заказать импорт с помощью правила импорта-импорта tslint

В моем проекте используется правило tslint "import-ordering"

import CopyLensModal from './CopyLensModal';
import FetchStatus from '../../../../../state/generic/models/FetchStatus';
import FlexRow from '../../../../generic/components/FlexRow';
import Geofilter from '../../../../../state/geofilter/models/Geofilter';
import Input from '../../../../generic/components/Input';

import * as React from 'react';
import * as salert from 'sweetalert';

import { func } from '../../../../../types/func';
import { Iterable } from 'immutable';
import { Button } from 'react-bootstrap';

tslint не устраивает этот порядок и сбой при ошибке

[2, 1]: Импорт источников внутри группы должен быть в алфавитном порядке.
[4, 1]: Импорт источников внутри группы должен быть в алфавитном порядке.

Эта страница не очень помогла, я попытался разместить импорт по-разному, но без везения. Какой порядок будет правильным?

Ответ 1

Я согласен, что это сбивает с толку. Проблема заключается в том, что сравнения исходных строк включают в себя части имен ../.. для имен модулей, поэтому, чтобы успокоить правило, вам нужно отсортировать их следующим образом:

import FetchStatus   from '../../../../../state/generic/models/FetchStatus';
import Geofilter     from '../../../../../state/geofilter/models/Geofilter';
import FlexRow       from '../../../../generic/components/FlexRow';
import Input         from '../../../../generic/components/Input';
import CopyLensModal from './CopyLensModal';

Правило имеет две части и может быть настроено на принудительное упорядочение имен импорта и источников отдельно. Чтобы обеспечить соблюдение только упорядочения имен, вы можете использовать такую конфигурацию:

"ordered-imports": [true, {
  "import-sources-order": "any",
  "named-imports-order": "case-insensitive"
}]

Это приведет к ошибке для импорта следующим образом:

import { A, C, B } from 'some-module';

но не будет обеспечивать упорядочение для путей к модулю и т.д.

Ответ 2

хорошо также эта ошибка возникает, если нет пустой новой строки, добавленной как разделение между группами импорта.

import * как fs из 'fs'; import * as os from 'os';

import * как bar из './bar'; import * как foo из './foo';

также обратите внимание, если ошибка говорит так: (5,1): Импорт источников внутри группы должен быть в алфавитном порядке. это означает, что в указанном файле перейдите к строке # 5 и нажмите клавишу ввода, чтобы добавить новую пустую строку в качестве разделителя.

Я сделал это, и это решило мою проблему. для получения дополнительной информации об этой проблеме просмотрите эту страницу