typescript - Är det en dålig praxis att använda ts-node i produktion?
Jag använder för närvarande ts-node med Express i produktion och det fungerar bra hittills. Finns det någon anledning till att jag borde kompilera och köra .js istället?
Svar #1
Enligt Blake Embrey, författaren till ts-node, kan du använda det i produktion MEN du bör använda det med --transpile-only-flaggan.
Exempel:
ts-node --transpile-only ./src/start.ts
Om du kompilerar med endast transpile kommer det att ha ett lägre minnesavtryck eftersom ingen typinformation kommer att genereras. Det kan dock uppstå problem när du använder reflect-metadata (med experimentellt stöd för dekoratörer).
Kort sagt: Använd ts-node --transpile-only (det finns även ts-node-transpile-only) i produktion när du inte använder reflect-metadata. Annars, använd tsc i kombination med klassisk node.
Svar #2
Nej, du borde inte använda det i produktion, även om det kommer att cachea de kompilerade filerna kommer det att vara långsammare att starta och använda mer minne eftersom det håller kvar en instans av kompilatorn och filer i minnet.
Det är bättre att kompilerar filerna i förväg med vilka byggverktyg du än använder för att säkerställa att byggen faktiskt lyckas om din utvecklingsmiljö och produktion av någon anledning skulle skilja sig åt (detta beror på hur ditt arbetsflöde ser ut).
Ett fall kan vara att du vill stoppa distributionen om appen inte faktiskt byggs innan du distribuerar den och försöker köra den och ersätta den körande instansen. Ett exempel kan se ut så här:
yarn
yarn build // tsc index.ts (possibly returns 1, stop build and output error)
yarn start // node index.js
