חבילות workspace פרטיות ב-pnpm שנכתבו ב-TypeScript: לחשוף src או dist?
יש לי מונוריפו שברובו קוד TypeScript שמנוהל באמצעות pnpm, ויש לנו הרבה תלות בין חבילות בתוך סביבת העבודה (למשל עבור חבילות ספרייה). החבילות הללו פרטיות לסביבת העבודה הזו ואינן מפורסמות מעולם בעצמן. בדרך כלל אנחנו מגדירים את החבילה כך:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": ["dist"]
}
הבעיה בזה היא שכאשר אתה משנה משהו בספרייה. זה די מעצבן שהסביבת פיתוח לא תראה את השינויים האלה עד שהספרייה נבנית מחדש. בגלל זה, אני שוקל אם במקום זאת כדאי פשוט לגרום לחבילה לחשוף את קוד המקור של TypeScript:
{
"name": "my-library",
"license": "UNLICENSED",
"private": true,
"main": "src/index.ts",
"files": ["src"]
}
זה נראה שעובד במבט ראשון, אבל זה גם נראה כמו רעיון לא טוב. מהם החסרונות של הגישה הזו? האם קוד המקור של TypeScript יתנהג בצורה לא צפויה מכיוון שזה תלוי בכלי TypeScript שבו משתמש החבילה התלויה (למשל, foo-server משתמש ב-TypeScript 4.7 ו-bar-server משתמש ב-TypeScript 4.9, כך שהם מפרשים את הקוד של my-library בצורה שונה)? האם יש דרך טובה יותר למבנה סביבת העבודה שלי כדי שזה לא יקרה?
אם זו רעיון רע, האם יש אסטרטגיה אחרת שאנשים משתמשים בה כדי להפוך את חוויית הפיתוח לפחות קשה? או שאני פשוט צריך לסבול ולהתמודד עם זה?