typescript - Forskjell mellom codeActionsOnSave og formatOnSave i VS Code
Nyere versjoner av VS Code inkluderer et nytt codeActionsOnSave-alternativ. Det anbefales å sette opp Eslint for eksempel. Jeg forstår imidlertid ikke forskjellen fra det tidligere eksisterende formatOnSave-alternativet, eller deres forhold til defaultFormatter-alternativet, plugins som Prettier og ESLint, og VS Codes standardoppførsel.
"Fix" virker mer komplett, men å deaktivere "format" vil ikke alltid formatere koden min ved lagring. Jeg har også en tendens til å ha konflikter mellom Eslint og Prettier-formatering...
Basert på det er det uklart for meg hvordan jeg skal sette opp en riktig VS Code-formateringskonfigurasjon som respekterer prosjektinnstillinger (TypeScript, Eslint, Prettier osv. som kan aktiveres/deaktiveres avhengig av prosjektet), på grunn av mangel på forståelse om VS Code-innstillingene.
Svar #1
Jeg prøver å få VS Code til å kjøre ESLint og Prettier sammen på riktig måte også.
Da ville VSCode 1.44 (mars 2020) fremheve en annen forskjell mellom codeActionsOnSave og formatOnSave:
Eksplisitt rekkefølge for editor.codeActionsOnSave
Du kan nå sette
editor.codeActionsOnSavetil en array med kodehandlinger som skal utføres i rekkefølge. Du kan bruke dette for å garantere at en spesifikk kodehandling alltid kjøres før eller etter en annen som kan være i konflikt med den.Følgende
editor.codeActionsOnSavevil alltid kjøreOrganize Importsetterfulgt avFix Allnår organisering av imports er fullført:"editor.codeActionsOnSave": [ "source.organizeImports", "source.fixAll" ]
Men hovedforskjellen mellom codeActionsOnSave og formatOnSave forblir at:
- den sistnevnte (
formatOnSave) formaterer bare kode, - mens den første (
codeActionsOnSave) kan kjøre én eller flere kommandoer på koden, kommandoer som kanskje ikke er relatert til formatering.
Som påpekt av Umair Ishaq i kommentarene:
Det faktiske skjemaet for
editor.codeActionOnSave, som viser at det aksepterer en matrise, kan finnes her påsrc/vs/workbench/contrib/codeActions/browser/codeActionsContribution.ts
