在我的项目中使用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没有那么多帮助,我试图以多种不同的方式进口,但没有运气。哪个订单是正确的?
答案 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]
}
}