typescript - Används en annan version av tsc när man använder npm run?


Jag har VS Code och ett Node.js-projekt som använder Typescript. I mitt package.json-script-block finns det ett objekt:

"build-ts": "tsc"

Om jag kör enkel tsc på den integrerade terminalens kommandorad, är kompileringen okej. Men om jag kör npm run build-ts upptäcker det syntaxfel i en fil. Orsaken till felet verkar komma från en äldre kompilatorversion.

Om jag kör tsc -v på kommandoraden, visar det Version 2.9.2. Använder npm run någon annan version av tsc någonstans?

Förresten, är npm run från paketet npm-run-script? Jag körde ett npm list och jag kunde inte hitta npm-run-script lokalt eller globalt.

Svar #1

Frågan löstes via kommentar, men jag lämnar ändå detta svar här som en lite mer utförlig version.

  1. När du kör npm run (eller npm run-script) söker det först efter de körbara filerna som är installerade lokalt. Detta möjliggör att använda olika versioner av dessa körbara filer för varje projekt (till exempel, om ett bibliotek är inkompatibelt med en ny version av tsc). Så om tsc är installerad som ett beroende (eller dev-beroende), kommer npm run att köra den, och inte den som är installerad globalt. Samma gäller för gulp och andra CLI-verktyg.

  2. npm run-script är inte ett paket, det är ett internt npm-kommando, precis som install och andra. Du kan kontrollera detta med npm help - detta kommando visar listan över alla inbyggda kommandon på en gång.