Pakej ruang kerja peribadi pnpm yang ditulis dalam TypeScript: dedahkan src atau dist?
Saya mempunyai sebuah monorepo yang kebanyakannya kod TypeScript yang diurus menggunakan pnpm, dan kami mempunyai banyak kebergantungan pakej dalam ruang kerja (contohnya untuk pakej perpustakaan). Pakej-pakej ini adalah peribadi untuk ruang kerja ini dan tidak pernah diterbitkan secara bersendirian. Kami biasanya mendefinisikan pakej tersebut seperti berikut:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": ["dist"]
}
Masalah dengan ini adalah apabila anda menukar sesuatu dalam pustaka. Agak menjengkelkan bahawa IDE tidak akan melihat perubahan itu sehingga pustaka dibina semula. Disebabkan ini, saya sedang mempertimbangkan sama ada kita sebaliknya patut membiarkan pakej mendedahkan sumber TypeScript:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "src/index.ts",
"files": ["src"]
}
Ini nampaknya berfungsi pada pandangan pertama, tetapi nampaknya juga ia mungkin idea yang buruk. Apakah kelemahan pendekatan ini? Adakah sumber TypeScript akan mempunyai tingkah laku yang tidak dapat diramalkan kerana ia bergantung kepada peralatan TypeScript yang digunakan oleh pakej bergantung (contohnya, foo-server menggunakan TypeScript 4.7 dan bar-server menggunakan TypeScript 4.9, jadi mereka mentafsir sumber my-library saya dengan berbeza)? Adakah terdapat cara yang lebih baik untuk menyusun ruang kerja saya supaya ini tidak berlaku?
Jika ini adalah idea yang buruk, adakah terdapat strategi lain yang digunakan orang untuk menjadikan pengalaman pembangunan kurang sukar? Atau patutkah saya terus menanggungnya dan menghadapinya?