typescript - Vad är skillnaden mellan `extends` och `rulesDirectory` i TSLint


TSLint.json-konfigurationsfilen (https://github.com/palantir/tslint) stöder extends och en rulesDirectory-array på följande sätt

{
  "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"
  ]
}

Dokumentationen verkar något öppen för tolkning för nya användare som inte är bekanta med verktyget.

Jag skulle uppskatta om någon kunde klargöra några punkter om beteendet hos extends och rulesDirectory i relation till användning i VS Code-redigeraren och tslinting i allmänhet.

  1. Ger extends endast en standardkonfiguration (om den tillhandahålls av paketet)?

  2. och är detta därför annorlunda än rulesDirectory?

    • Fungerar rulesDirectory bara som en källa för regler som du specifikt måste välja att använda (och är nödvändig om du anger regler i den övergripande tslint.json)?

    • Ska jag fortfarande specificera tslint-paketen både i extends och rulesDirectory?

  3. Om vi antar att extends tillhandahåller standardinställningar från en annan tslint-konfigurationsfil, skulle jag då kunna specificera rulesDirectory och lägga till en regel för att åsidosätta ett specifikt flagg?

Oroade eftersom endast några av reglerna visas i IntelliSense-autokomplettering och bara ett fåtal beteenden som jag skulle uppskatta mer klarhet kring.

Svar #1

Vad är skillnaden mellan extends och rulesDirectory i TSLint

De är mycket olika.

  • extends låter dig använda en befintlig tslint-konfiguration och sedan utöka den
  • rulesDirectory låter dig helt enkelt lägga till kataloger för egna regler.

Svar #2

?Svar hämtat från tslint-konfigurationsdokumentation den 6 april 2018:

  • extends?: string | string[]: Namnet på en inbyggd konfigurationspreset (se inbyggda presets nedan), eller en sökväg eller en array av sökvägar till andra konfigurationsfiler som denna konfiguration utökar. Detta värde hanteras med node-modulupplösningssemantik. Till exempel, ett värde av "tslint-config" skulle tala om för TSLint att försöka ladda huvudfilen av en modul med namnet "tslint-config" som en konfigurationsfil. Specifika filer inuti node-moduler kan också specificeras, t.ex. "tslint-config/path/to/submodule". Relativa sökvägar till JSON-filer eller JS-moduler stöds också, t.ex. "./tslint-config".
  • rulesDirectory?: string | string[]: En sökväg till en katalog eller en lista med sökvägar till kataloger med [anpassade regler][2]. Dessa värden hanteras med hjälp av Node-modulers upplösningssemantik, om en index.js placeras i din reglerkatalog. Vi faller tillbaka på att använda relativa eller absoluta sökvägar om modulen inte kan lösas. Om du vill undvika modulupplösning kan du direkt använda en relativ eller absolut sökväg (t.ex. med ./).

Eventuella regler som anges i detta rules-block kommer att åsidosätta de som är konfigurerade i någon grundläggande konfiguration som utökas.

Relaterade artiklar