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.codeActionsOnSave til 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.codeActionsOnSave vil alltid kjøre Organize Imports etterfulgt av Fix All nå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

Relaterte artikler