node.js - Hur kompilerar man en TypeScript-webbapp med node-moduler till en JavaScript-fil med hjälp av CLI?
Vad är det enklaste och snabbaste sättet att skapa en TypeScript-webbapplikation med node-moduler, som kompileras till en JavaScript-fil som kan anropas från HTML?
Till exempel, om jag har följande projektstruktur:
├── node_modules
│ └── mathjs
│ └── (dependencies, etc.)
├── public
│ └── index.html
│ └── app.js
├── src
│ └── app.ts
├── package-lock.json
└── package.json
app.ts innehåller följande kod med node-moduler och typtimporter:
import math from "mathjs";
import { Matrix } from "mathjs";
const point: Matrix = math.matrix([ +1, +1, +1 ]);
// etc...
Hur kan jag göra så att app.ts och alla dess beroenden kompileras till en enda fil app.js i public-katalogen, så att den kan inkluderas längst ner i body-taggen i index.html och köras i en webbläsare?
<script type="module" src="/app.js"></script>
Med andra ord, vilka CLI-verktyg kan jag använda för att kompilera det här projektet för webben?
Jag har tillbringat timmar med att försöka forska och få något att fungera (utan att kopiera och klistra in direkt från node_modules) och har inte kunnat få något att fungera. All hjälp skulle uppskattas!
Redigera: Paketet är precis vad jag letade efter.
Svar #1
Det enklaste du kan göra med enbart TypeScript-kompilatorn är att använda system- eller AMD-moduler inuti tsconfig.json och också använda outFile-alternativet (detta alternativ fungerar endast med system- eller AMD-moduler) för att sammanfoga alla filer i din app till ett paket som du senare kan använda med något som system.js. Du kan läsa mer om det här.
Jag vill bara påpeka att med standardkonfigurationen av tsconfig kommer node_module-beroenden inte att inkluderas i outFile-konfigurationsalternativets paket och du måste konfigurera systemJS för att ladda dem separat. Kanske är det möjligt att inkludera dem också, men jag har inte experimenterat med tsc-alternativen för att uppnå något sådant, men du kan försöka. Vänligen meddela mig om du lyckas.
Förresten, om du bestämmer dig för att gå med denna metod och inte använda en extern modulbundlare som webpack eller rollup, föreslår jag att du inte använder outFile-alternativet för att bunta ihop allt i en fil, eftersom jag för ett tag sedan hade problem med att få systemJS att fungera med den sammanslagna bundlen, men när jag använde separata filer fungerade allt bara bra.