Paquets de l’espace de travail privé pnpm écrits en TypeScript : exposer src ou dist ?
J'ai un monorepo contenant principalement du code TypeScript géré avec pnpm, et nous avons beaucoup de dépendances entre les packages du workspace (par exemple pour les packages de bibliothèque). Ces packages sont privés à ce workspace et ne sont jamais publiés individuellement. Nous définissons généralement le package comme ceci :
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": ["dist"]
}
Le problème avec cela, c'est que lorsque vous changez quelque chose dans une bibliothèque. C'est un peu ennuyeux que l'IDE ne voie pas ces changements tant que la bibliothèque n'est pas reconstruite. À cause de cela, je me demande si nous ne devrions pas plutôt simplement faire en sorte que le paquet expose le code source TypeScript :
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "src/index.ts",
"files": ["src"]
}
Cela semble fonctionner à première vue, mais il semble aussi que ce pourrait être une mauvaise idée. Quels sont les inconvénients de cette approche ? Le code source TypeScript aura-t-il un comportement imprévisible parce qu'il dépendrait des outils TypeScript utilisés par le package dépendant (par exemple, foo-server utilise TypeScript 4.7 et bar-server utilise TypeScript 4.9, donc ils interprètent différemment le code source de ma-bibliothèque) ? Y a-t-il une meilleure façon de structurer mon espace de travail pour que cela n'arrive pas ?
Si c'est une mauvaise idée, y a-t-il une autre stratégie que les gens utilisent pour rendre l'expérience de développement moins difficile ? Ou devrais-je juste l'accepter et m'en accommoder ?