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?