node.js - Hvorfor ikke transpile TypeScript med npm sitt `prepare` livssyklus-skript?
Ansvarsfraskrivelse: Jeg er nybegynner med både JavaScript og TypeScript.
Mange TypeScript-prosjekter inkluderer et skript kalt build i sin package.json. Skriptet er ment å transpile kode til JavaScript ved å kalle tsc:
{
"name": "my-typescript-project",
"devDependencies": {
"typescript": "^5.1.3",
…
},
"scripts": {
"build": "tsc",
…
}
…
}
Fordi build ikke er noen av npm sine livssyklus-skript, blir det ikke kjørt automatisk. I stedet må det kjøres manuelt med kommandoen npm run-script.
Siden versjon 4.0.0 støtter npm et livssyklus-skript kalt prepare som den kjører på følgende tidspunkt:
- Kjøres FØR pakken pakkes, dvs. under
npm publishognpm pack- Kjører på lokal
npm installuten noen argumenter- Kjøres ETTER
prepublish, men FØRprepublishOnly- MERK: Hvis en pakke som installeres gjennom git inneholder et
prepare-skript, vil densdependenciesogdevDependenciesbli installert, og prepare-skriptet vil bli kjørt, før pakken pakkes og installeres.
Ved å bytte fra det tilsynelatende vanlige build til prepare for formålet med å transpile TypeScript til JavaScript, ville man ikke lenger måtte transpile kode manuelt, og kunne installere TypeScript-prosjekter som git-avhengigheter sømløst. Hvorfor bruker ikke TypeScript-prosjekter prepare for å kjøre tsc?
En mulig grunn til å bruke build ville være å forbli kompatibel med andre pakkebehandlere; Yarn støtter ikke prepare lenger, og det gjør ikke pnpm heller. Prosjekter må imidlertid forplikte seg til én pakkebehandler; å bytte til en annen vil kreve konvertering av låsefilen, blant annet.