ts autofix
1.0.0
แก้ไขข้อผิดพลาด TS โดยอัตโนมัติเมื่อมีการแก้ไขโค้ด
สำหรับกรณีการใช้งานส่วนใหญ่ คุณควรใช้ ts-autofix
ได้โดยตรงผ่าน npx
npx ts-autofix list
จากรากของโปรเจ็กต์ TS ของคุณจะแสดงรายการการแก้ไขที่พร้อมใช้งานnpx ts-autofix
จะพยายามเรียกใช้การแก้ไขที่มีอยู่ทั้งหมด หาก tsconfig ของคุณไม่ได้อยู่ที่ ./tsconfig.json
คุณควรเพิ่ม arg --project <pathToTsConfig>
ให้กับทั้งสองคำสั่ง
คุณยังสามารถกรองการแก้ไขที่ใช้ได้โดยใช้ --fixes
หรือ --errors
args
การโต้แย้ง | คำอธิบาย |
---|---|
--โครงการ | เส้นทางไปยังไฟล์ tsconfig ของคุณ เช่น npx ts-autofix [list] --project foo/tsconfig.json |
-ฉ --แก้ไข | ชื่อของการแก้ไข TS อย่างน้อยหนึ่งรายการที่จะนำไปใช้ ใช้ npx ts-autofix list เพื่อค้นหาการแก้ไขที่พร้อมใช้งานเช่น npx ts-autofix --fixes unusedIdentifier inferFromUsage |
-e --ข้อผิดพลาด | รหัสข้อผิดพลาด TypeScript เพื่อค้นหาการแก้ไข เช่น npx ts-autofix --errors TS6133 7006 |
--tsCliArgs | args CLI เพิ่มเติมสำหรับ tsc เพื่อแทนที่ตัวเลือกคอมไพเลอร์ เช่น หากคุณพยายามเพิ่มความเข้มงวดให้กับโปรเจ็กต์ของคุณ คุณอาจส่งแฟล็กคอมไพเลอร์เพิ่มเติมที่คุณพยายามบังคับใช้ เช่น 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 [ ] ;
} ;
ตัวเลือก | คำอธิบาย |
---|---|
tsconfigPath | (จำเป็น) เส้นทางไปยัง tsconfig.json ของโปรเจ็กต์ของคุณ |
คอมไพเลอร์OptionsOverrides | ตัวเลือกแทนที่การคอมไพเลอร์ตัวเลือกใน tsconfig ของคุณ |
ตัวกรองการวินิจฉัย | การเรียกกลับที่เป็นตัวเลือกเพื่อกรองการวินิจฉัย/ข้อผิดพลาดของ TypeScript ที่ต้องการพยายามค้นหาวิธีแก้ไข หากไม่ได้กำหนดไว้ ระบบจะใช้การวินิจฉัยทั้งหมด คืนค่า true เพื่อรวมการวินิจฉัยนั้นด้วย |
รหัส FixFilter | การเรียกกลับเพิ่มเติมเพื่อกรองการแก้ไขที่จะใช้ หากไม่ได้กำหนดไว้ การแก้ไขทั้งหมดจะถูกนำไปใช้ คืนค่า true เพื่อรวมการแก้ไขนั้นด้วย |
preprocessCodeChanges | การเรียกกลับที่เป็นทางเลือกเพื่อแก้ไขการแก้ไขก่อนที่จะนำไปใช้ ซึ่งสามารถส่งคืน 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
} ) ;