typescript - Hur får jag tslint att bevaka ändringar i en specifik mapp?
Jag använder webpack 2, och det kommer att meddela mig om det finns kompilationsproblem med min typescript-kod. Men jag har inte kommit på ett sätt att köra tslint genom det och få det att köras med varje ändring som upptäcks av webpack när det körs i dev-server-läge.
Jag har försökt få tslint-loader att fungera, men för varje fil i mitt projekt berättar det helt enkelt för mig:
/src/main.ts Inga giltiga regler har angetts
Jag använder det så här:
rules: [
{
test: /\.ts$/,
enforce: 'pre',
loader: 'tslint-loader',
options: {
configuration: {
configFile: true // I have also tried setting this to "tslint.json"
}
}
},
... more loaders...
Fortfarande ingen glädje.
Finns det ett sätt att antingen:
- Kan tslint-loader som jag använder informera mig om lint-fel i webpack-dev-server-läge varje gång jag gör en ändring?
- Kör helt enkelt tslint från kommandoraden och låt det kontinuerligt "övervaka" filerna i mitt projekt? Jag letar efter något som
tslint ./src/**/*.ts -t --force, men med ett extra--watch-flagga som enligt tslint-dokumentationen inte existerar.
Jag skulle föredra att inte använda min editor (som VS Code), eftersom inte alla i mitt team använder den. Jag skulle föredra att lösningen finns antingen i webpack-konfigurationen eller i skripten i package.json.
Tack!
Svar #1
När det gäller ett skript som du kan köra från kommandoraden kan du prova att använda npm-watch: https://www.npmjs.com/package/npm-watch.
Jag har använt det för att framgångsrikt göra det du pratar om. Här är vad jag gjorde:
Installerade npm-watch i mitt projekt:
npm install npm-watch --save-dev
Lade till följande i min package.json-fil:
"watch": {
"lint": "src/main.ts"
},
"scripts": {
"lint": "tslint src/**/*.ts -t verbose",
"watch": "npm-watch"
},
Jag tycker att npm-watch är ett bra verktyg för att ge bevakningsfunktionalitet till verktyg som inte har det, som tslint.
Uppdatering:
Dessutom, om du inte vill lägga till en "watch"-sektion i din package.json-fil, har jag faktiskt just upptäckt ett nytt verktyg som jag gillar ännu mer som heter chokidar. Det låter dig specificera filväljare och kommando som du vill köra, allt på samma rad.
Här är min uppdaterade package.json:
"scripts": {
"lint:watch": "chokidar webpack.config.* src/**/*.ts buildScripts/**/*.ts -c \"npm run lint\" --initial --verbose"
},
Du ger det i princip en eller flera filväljare, och sedan använder du '-c'-parametern för att ange kommandot du vill köra när någon av dessa filer ändras.
Så nu kan du bara köra kommandot:
npm run lint:watch
Jag gillar att köra det med --initial-flaggan inställd, så det väntar inte på att några filer ska ändras innan kommandot körs.
