it-swarm.com.de

So bestellen Sie Importe mit der Import-Ordering-Regel von tslint

In meinem Projekt wird die "Import-Ordering" -Regel von Tslint verwendet

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 ist mit dieser Reihenfolge nicht zufrieden und stürzt mit einem Fehler ab

[2, 1]: Importquellen innerhalb einer Gruppe müssen alphabetisch sein.
[4, 1]: Importquellen innerhalb einer Gruppe müssen alphabetisch sein.

Diese Seite hat nicht viel geholfen, ich habe versucht, Importe auf viele verschiedene Arten zu platzieren, aber ohne Glück. Welche Reihenfolge wird korrekt sein? 

19
Denis

Ich stimme zu, dass es verwirrend ist. Das Problem ist, dass die Vergleiche der Quellstrings die ../..-Teile der Modulnamen enthalten. Um die Regel zu besänftigen, müssen Sie sie wie folgt sortieren:

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

Die Regel besteht aus zwei Teilen und kann so konfiguriert werden, dass die Reihenfolge der Importnamen und -quellen separat erzwungen wird. Um nur die Reihenfolge der Namen zu erzwingen, können Sie eine Konfiguration wie die folgende verwenden:

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

Das würde einen Fehler für Importe wie diesen auslösen:

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

würde aber keine Reihenfolge für die Modulpfade usw. erzwingen.

33
cartant

dieser Fehler tritt ebenfalls auf, wenn keine neue Zeile als Trennung zwischen Importgruppen hinzugefügt wird.

import * als fs aus 'fs'; import * als os aus 'os';

importieren * als Takt von './bar' ;import * als foo von './foo';

beachten Sie auch, wenn der Fehler wie folgt lautet: (5,1): Importquellen innerhalb einer Gruppe müssen alphabetisch sein.. 5 und drücken Sie die Eingabetaste, um dort eine neue leere Zeile als Trennzeichen hinzuzufügen.

Ich habe das getan und das hat mein Problem gelöst. Weitere Informationen zu diesem Problem finden Sie auf dieser Seite

3
Oswaldo

In der Datei tslint.json add

  "rules": {
    "ordered-imports": [false],
    "object-literal-sort-keys": [false]
  }

Zum Beispiel sieht dann die Datei tslint.json so aus

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts",
      "coverage/lcov-report/*.js"
    ]
  },
  "rules": {
    "ordered-imports": [false],
    "object-literal-sort-keys": [false]
  }
}
0
foobarfuu