typescript - Hva er forskjellen mellom `extends` og `rulesDirectory` i TSLint


TSLint.json-konfigurasjonsfilen (https://github.com/palantir/tslint) støtter extends og en rulesDirectory-array som dette

{
  "extends": [
    "tslint-microsoft-contrib",
    "tslint-config-security"
  ],
  "rulesDirectory": [
    "node_modules/tslint-eslint-rules/dist/rules",
    "node_modules/tslint-microsoft-contrib",
    "node_modules/tslint-config-security"
  ]
}

Dokumentasjonen virker litt åpen for tolkning for nye brukere som ikke er kjent med verktøyet.

Jeg ville sette pris på om noen kunne klargjøre noen punkter om oppførselen til extends og rulesDirectory i forhold til bruk i VS Code-editoren og tslinting generelt.

  1. Gir extends kun en standardkonfigurasjon (hvis levert av pakken)?

  2. og er dette derfor forskjellig fra rulesDirectory?

    • Gir rulesDirectory kun regler som du spesifikt må velge å bruke (og kreves hvis du spesifiserer regler i den øverste tslint.json)?

    • Bør jeg fortsatt spesifisere tslint-pakkene både i extends og i rulesDirectory?

  3. Hvis vi antar at extends gir standardinnstillinger fra en annen tslint-konfigurasjonsfil, vil jeg kunne spesifisere rulesDirectory og legge til en regel for å overstyre en bestemt flagg?

Bekymret fordi bare noen av reglene vises i IntelliSense-autofullføring, og bare noen få oppføringer som jeg gjerne skulle hatt mer klarhet i.

Svar #1

Hva er forskjellen mellom extends og rulesDirectory i TSLint

De er veldig forskjellige.

  • extends lar deg bruke en eksisterende tslint-konfigurasjon og deretter utvide den
  • rulesDirectory lar deg enkelt legge til kataloger for egendefinerte regler.

Svar #2

?Svar hentet fra tslint-konfigurasjonsdokumentasjonen per 6. april 2018:

  • extends?: string | string[]: Navnet på en innebygd konfigurasjonspreset (se innebygde presets nedenfor), eller en sti eller et array av stier til andre konfigurasjonsfiler som utvides av denne konfigurasjonen. Denne verdien håndteres ved hjelp av node-modulens oppløsningssemantikk. For eksempel vil en verdi på "tslint-config" fortelle TSLint å prøve å laste hovedfilen til en modul kalt "tslint-config" som en konfigurasjonsfil. Spesifikke filer inne i node-moduler kan også spesifiseres, f.eks. "tslint-config/path/to/submodule". Relative stier til JSON-filer eller JS-moduler støttes også, f.eks. "./tslint-config".
  • rulesDirectory?: string | string[]: En sti til en katalog eller et array av stier til kataloger med [egendefinerte regler][2]. Disse verdiene håndteres ved hjelp av Node-moduloppløsningsemantikk, dersom en index.js er plassert i reglerkatalogen din. Vi faller tilbake til å bruke relative eller absolutte stier hvis modulen ikke kan løses. Hvis du vil unngå modul-oppløsning, kan du bruke en direkte relativ eller absolutt sti (f.eks. med ./).

Eventuelle regler spesifisert i denne rules-blokken vil overstyre de som er konfigurert i enhver grunnkonfigurasjon som utvides.

Relaterte artikler