tsdkbundle: Бун-оптимізоване збирання TypeScript із кількома елементами
Робочий процес збирання пакетів на основі Bun для багатокомпонентних TypeScript-пакетів із налаштовуваними значеннями за замовчуванням для локальних компіляцій та перевірки артефактів у CI.
У цьому посібнику створюється функціональний шлях для: tsdkbundle: TypeScript Multi-Entry Bundler на основі Bun. Основна увага приділяється контрактам, перевіркам та коду, який можна додати до репозиторію без необхідності здогадуватися щодо його призначення. Для загального огляду необхідно визначити вхідні дані, виконавця кроку та критерії завершення перед зміною коду. Виконавці мають мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан. Віддавайте перевагу невеликим, тестиованим одиницям коду перед об’ємними скриптами. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність.
src/
├── index.ts # API service
├── worker.ts # Async worker
└── scripts/
└── migrate.ts # Database migration
export default {
projects: {
backend: {
target: "node",
entry: ["src/index.ts", "src/worker.ts", "src/scripts/migrate.ts"],
},
},
};
bundle dev backend
bundle build backend
npm i tsdkbundle -D
Чому Bun?
Для проєкту Why Bun? необхідно визначити вхідні дані, виконавця кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цю стадію як контракт між вхідними даними та перевіреними результатами. Призначте назви елементів, визначте критерії успіху та не допускайте мовчазного часткового завершення. Зрозумійте, що насправді блокує цикл подій, а що лише очікує. Синхронні винятки є класичною пасткою.
Сценарії використання
Для сценаріїв використання необхідно визначити вхідні дані, відповідальну особу за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Записуйте час виконання та витрати поруч із функціональними результатами. Чіткий огляд на ранніх етапах запобігає несподіваним рахункам у спільних середовищах. З’ясуйте, що насправді блокує цикл подій, а що лише очікує. Синхронні винятки є класичною пасткою.
Чек-лист операцій
Для чек-листу операцій необхідно визначити вхідні дані, відповідальну особу за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан.
Документуйте як шлях успішного виконання, так і шлях відновлення. Повторні спроби та обробка некоректних повідомлень є частиною продукту.
Віддавайте перевагу структурованим патернам конкурентності перед обіцянками типу „fire-and-forget“, які приховують помилки.
Віддавайте перевагу надійності незалежно від креативних одноразових демонстрацій.
Віддавайте перевагу малим, тестованим одиницям коду перед величезними скриптами. Коли якийсь крок зазнає невдачі, ця проблема має вказувати на конкретну відповідальність.
Віддавайте перевагу структурованим патернам конкурентності перед обіцянками типу „fire-and-forget“, які приховують помилки.
Перш ніж підвищувати версію, заморозьте існуючі версії, зафіксуйте ідеальний запис для критичного шляху виконання та підтвердьте кроки для скасування змін. У спільних середовищах необхідні обмеження на частоту запитів, перевірки прав доступу та чіткий власник для зміни секретів.
Для посилення безпеки, згідно з приміткою 0, необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан системи.
Зберігайте конфігурацію поза кодом додатку. Файли середовища, сховища секретних даних та флаги функцій мають знаходитися в одному місці, яке можуть перевіряти оператори.
Встановіть фіксовані версії програмного забезпечення під час виконання та зафіксуйте дайджест, який використовувався під час демонстрації.