如何使用tslint的导入排序规则来订购导入

时间:2017-01-23 11:49:42

标签: import 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]:组内的导入源必须按字母顺序排列。

This page没有那么多帮助,我试图以多种不同的方式进口,但没有运气。哪个订单是正确的?

3 个答案:

答案 0 :(得分:39)

我同意这令人困惑。问题是源字符串比较包括模块名称的Array部分,因此要安抚规则,您需要对它们进行排序:

../..

该规则包含两部分,可以配置为分别强制执行导入名称和来源的排序。要仅强制执行名称排序,您可以使用如下配置:

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"
}]

但不会强制执行模块路径等的订购

答案 1 :(得分:7)

如果没有添加空新行作为导入组之间的分隔,也会发生此错误。

import * as fs from 'fs';
import * as os from 'os';

import * as bar from './bar';
import * as foo from './foo';

另请注意错误是否如下所示:

***(5,1): Import sources within a group must be alphabetized.***

这意味着在指定的文件中转到第5行并按Enter键在那里添加一个新的空行作为分隔符。

我这样做了,这解决了我的问题。有关此问题的更多参考,请查看此page

答案 2 :(得分:2)

在文件tslint.json中添加

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

例如,文件tslint.json如下所示

{
  "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]
  }
}