visual studio code - Hvordan kan jeg bruke en tilpasset tslint-regel skrevet i TypeScript med vscode-tslint uten å kompilere til JS?
Jeg har en tilpasset regel skrevet for TSlint i TypeScript som jeg kan kjøre ved hjelp av ts-node i et skript jeg bruker på min Linux VM:
#!/bin/bash
set -e
ROOT_DIR=$(dirname $(dirname $0))
cd $ROOT_DIR
find "$ROOT_DIR/src" -name "*.ts" -o -name "*.tsx" | xargs $(yarn bin)/ts-node $(yarn bin)/tslint
Dette gjør det mulig for tslint å kjøre TS-regelen direkte uten å kompilere først, og det fungerer.
Problemet er at ms-vscode.vscode-typescript-tslint-plugin ikke plukker opp den regelen selv om den er eksplisitt aktivert i tsconfig.json-reglene. Jeg kjører VSCode på en separat maskin med en Windows-vert, og monterer filsystemet via Samba levert fra Linux-VM-en. Andre regler i filen blir respektert og vist for installerte og innebygde regler, som no-console, osv.
Hvordan kan jeg få informasjon om hvorfor regelen ikke blir brukt? Er det noe jeg må konfigurere i pluginen for at dette skal fungere?
Svar #1
Dessverre støttes ikke dette av VScode/vscode-typescript-tslint-plugin og ser ikke ut til å være på deres agenda.
Her er en lukket sak på deres GitHub som ber om denne funksjonen.
Du kan selvfølgelig kompilere regelen din til JS først, men det er ikke det du ba om.
Svar #2
Her er hva jeg tror kan være relatert til problemet.
La oss kalle regel-filen
noImportsRule.ts. Regler refereres itslint.jsonmed deres kebab-stil identifikator, så"no-imports": truevil konfigurere regelen.Kjerneregler kan ikke overskrives med en egendefinert implementering.
Egendefinerte regler kan også ta inn alternativer akkurat som kjerne-regler (hentet via
this.getOptions())Fra og med TSLint v5.7.0 trenger du ikke lenger å kompilere dine egendefinerte regler før du bruker dem. Du må fortelle node.js hvordan du skal laste .ts-filer, for eksempel ved å bruke ts-node:
Viktige konvensjoner:
- Regelidentifikatorer er alltid skrevet med bindestrek.
- Regelfiler er alltid skrevet med camelCase (
camelCasedRule.ts). - Regelfiler må inneholde suffikset
Rule. - Den eksporterte klassen må alltid hete Rule og utvide fra
Lint.Rules.AbstractRule
for alle detaljer