ts autofix
1.0.0
코드 수정이 가능하면 TS 오류를 자동으로 수정합니다.
대부분의 사용 사례에서는 npx
통해 직접 ts-autofix
사용할 수 있습니다.
npx ts-autofix list
사용 가능한 수정 사항이 나열됩니다.npx ts-autofix
사용 가능한 모든 수정 사항을 실행하려고 시도합니다. tsconfig가 ./tsconfig.json
에 없으면 두 명령에 arg --project <pathToTsConfig>
추가해야 합니다.
--fixes
또는 --errors
인수를 사용하여 적용되는 수정 사항을 필터링할 수도 있습니다.
논쟁 | 설명 |
---|---|
--프로젝트 | tsconfig 파일의 경로입니다. 예: npx ts-autofix [list] --project foo/tsconfig.json |
-에프 --수정 | 적용할 하나 이상의 TS 수정 사항 이름입니다. npx ts-autofix list 사용하여 사용 가능한 수정 사항을 찾으세요.예: npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-이자형 --오류 | 수정 사항을 찾을 TypeScript 오류 코드입니다. 예: npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | 컴파일러 옵션을 재정의하기 위한 tsc에 대한 추가 CLI 인수입니다. 예를 들어 프로젝트의 엄격성을 높이려는 경우 적용하려는 추가 컴파일러 플래그를 전달할 수 있습니다. 예: npx ts-autofix [list] --tsCliArgs "--noImplicitAny" |
ts-autofix
라이브러리로 사용하여 수정 사항을 실행하고 적용하는 방법을 더 효과적으로 제어할 수도 있습니다.
예를 들어
import { tsAutoFix } from `ts-autofix` ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
diagnosticsFilter : ( diag ) => diag . code === 6133 ,
} ) ;
tsAutoFix
에 대한 입력은 TsAutoFixOptions
유형의 구성 개체입니다.
type TsAutoFixOptions = {
tsconfigPath : string ;
compilerOptionsOverrides ?: ts . CompilerOptions ;
diagnosticsFilter ?: ( diagnostic : ts . Diagnostic ) => boolean ;
codeFixFilter ?: ( codeFixAction : ts . CodeFixAction ) => boolean ;
preprocessCodeChanges ?: ( changes : ts . TextChange [ ] , sourceFile : ts . SourceFile , diagnostic : ts . Diagnostic ) => ts . TextChange [ ] ;
} ;
옵션 | 설명 |
---|---|
tsconfig경로 | (필수) 프로젝트의 tsconfig.json 경로입니다. |
컴파일러옵션 재정의 | tsconfig의 컴파일러 옵션에 대한 선택적 재정의. |
진단필터 | 수정 사항을 찾으려고 시도할 TypeScript 진단/오류를 필터링하는 선택적 콜백입니다. 정의되지 않은 경우 모든 진단이 사용됩니다. 해당 진단을 포함하려면 true 반환하세요. |
코드수정필터 | 적용할 수정 사항을 필터링하는 선택적 콜백입니다. 정의되지 않은 경우 모든 수정 사항이 적용됩니다. 해당 수정 사항을 포함하려면 true 반환하세요. |
전처리코드변경 | 수정 사항을 적용하기 전에 수정 사항을 수정하는 선택적 콜백입니다. 수정된 changes 반환하거나 개별 변경 사항을 건너뛸 수 있지만 sourceFile 또는 diagnostic 직접 수정할 수는 없습니다. |
예를 들어 preprocessCodeChanges
사용하여 제안된 대체 항목을 수정하여 변수를 제거할 때 줄 주석이 유지되도록 할 수 있습니다.
import { tsAutoFix } from "ts-autofix" ;
import type * as ts from "typescript"
const preprocessCodeChanges = (
changes : ts . TextChange [ ] ,
sourceFile : ts . SourceFile ,
diagnostic : ts . Diagnostic
) : ts . TextChange [ ] => {
for ( const change of changes ) {
// If the change is purely a deletion
if ( ! change . newText ) {
let { start , length } = change . span ;
const removedText = sourceFile . text . substring ( start , start + length ) ;
// Skip leading line comments when removing code.
const match = removedText . match ( / ^(s*//.*r?n)+ / ) ;
if ( match ) {
change . span . start += match [ 0 ] . length ;
change . span . length -= match [ 0 ] . length ;
}
}
}
return changes ;
} ;
tsAutoFix ( {
tsConfigPath : "foo/tsconfig.json" ,
preprocessCodeChanges
} ) ;