在我的项目中,使用了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]:组内的导入源必须按字母顺序排列.
这个页面没有多大帮助,我试图以多种不同的方式进口,但没有运气.哪个订单是正确的?
我同意这令人困惑.问题是源字符串比较包括../..
模块名称的部分,因此要安抚规则,您需要按如下方式对它们进行排序:
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';
但不会强制对模块路径等进行排序.
如果没有添加空的新行作为导入组之间的分隔,也会发生此错误。
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以在其中添加新的空行作为分隔符。
我做到了,这解决了我的问题。有关此问题的更多参考,请查看此页面