2017-01-23 68 views
3

我的項目tslint的「進口訂貨」規則用於如何訂購與tslint進口排序規則的進口

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

「訂購 - 進口」規則有許多可配置的選項。不包括你的規則配置,這個問題是不是真的可以負責。 – cartant

+0

「ordered-imports」:[true], – Denis

回答

12

我同意這很混亂。問題是,源字符串比較包括模塊名稱的../..部分,所以安撫規則,你需要他們這樣的排序:

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

,但不會強制訂購的模塊路徑等。

+0

aha,所以../../部分也很重要..謝謝 – Denis

+1

謝謝!很混亂。我以爲我已經失去了對字母表的掌握了一會兒 –