typescript - Starta om tsserver när node_modules ändras, dvs; när man använder npm link
När du arbetar med ett npm-paket är det bekvämt att använda npm link för lokal utveckling.
Förord
Till exempel, med antagande av följande mappstruktur:
/lib
/consumer
Ett npm-paket "lib" skulle finnas i /lib, och npm link . gör det tillgängligt för länkning. Sedan, från /consumer, installerar körning av npm link lib det pågående utvecklingspaketet lib. I /lib skulle jag sedan köra ett build:watch-kommando för att kontinuerligt bygga/översätta om biblioteket till js + .d.ts-filer, och från /consumer skulle jag använda ett Hot-Module-Reloading-system såsom Vite.
Under utvecklingen skulle jag ständigt växla fram och tillbaka mellan /lib och /consumer. Detta fungerar utmärkt. Jag kan göra ändringar på båda ställena och HMR-systemet uppdaterar webbappen.
Men när jag gör ändringar i /lib kraschar detta TypeScript-servern i VSCode. Jag får varningar om att exporterna för den importerade, länkade modulen inte längre är tillgängliga, och röda understrykningar dyker upp överallt.
Fråga
Att köra "TypeScript: Restart TS server" från kommandopaletten löser problemet varje gång, så jag antar att min fråga är: Hur kan jag få TS-servern att starta om sig själv automatiskt i en situation som denna? Jag antar att den bara behöver veta när node_modules ändras på grund av den uppdaterade länkade biblioteket?
Svar #1
När du bygger /lib-katalogen tas filer inuti node_modules bort. Det betyder att du kommer behöva starta om VS Codes TS-server. Den goda nyheten är att VS Code arbetar på en automatisk TS-omstartsfunktion. Du kan läsa mer om det i detta GitHub-ärende.
Under tiden kan du prova detta VS Code-tillägg. Efter installationen anger du bara de filer det ska övervaka. För en konfiguration som min med turborepo och delpaket fungerade detta mönster:
**/packages/lib/dist/**/*.{ts}
