pnpm private arbeidsområdepakker skrevet i TypeScript: eksponere src eller dist?
Jeg har et monorepo med mest TypeScript-kode som administreres ved hjelp av pnpm, og vi har mange avhengigheter mellom pakker i arbeidsområdet (f.eks. for bibliotekkpakker). Disse pakkene er private for dette arbeidsområdet og publiseres aldri på egen hånd. Vi definerer vanligvis pakken slik:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": ["dist"]
}
Problemet med dette er når du endrer noe i et bibliotek. Det er litt irriterende at IDE-en ikke vil se disse endringene før biblioteket er bygget på nytt. På grunn av dette vurderer jeg om vi i stedet bare burde la pakken eksponere TypeScript-kilden:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "src/index.ts",
"files": ["src"]
}
Dette ser ut til å fungere ved første øyekast, men det virker også som det kan være en dårlig idé. Hva er ulempene med denne tilnærmingen? Vil TypeScript-koden ha uforutsigbar oppførsel fordi det vil avhenge av TypeScript-verktøyene som brukes av pakken som avhenger av den (f.eks. bruker foo-server TypeScript 4.7 og bar-server bruker TypeScript 4.9, så de tolker koden til my-library forskjellig)? Finnes det en bedre måte å strukturere arbeidsområdet mitt på slik at dette ikke skjer?
Hvis dette er en dårlig idé, finnes det noen andre strategier folk bruker for å gjøre utviklingsopplevelsen mindre friksjonsfull? Eller bør jeg bare bite i det og takle det?