DenoX CLI: Створення проєктів та функцій без втрати контролю
Встановіть DenoX CLI, створюйте шаблони додатків, генеруйте функції MVC за допомогою OpenAPI, безпечно видаляйте модулі та оновлюйте файли, що належать фреймворку, не торкаючись коду додатку.
Однією з основних цілей DenoX є скорочення повторюваної роботи з розробки без відбирання контролю у інженерів. Ця фреймворк-система постачає власний CLI у вигляді єдиного файлу TypeScript, який може створювати проекти, генерувати повні функції, безпечно видаляти модулі та оновлювати сам фреймворк.
На відміну від багатьох сучасних CLI, які використовують десятки пакетів, DenoX CLI повністю спирається на вбудовані можливості Deno.
Встановлення
Встановіть за одним командним запитом:
deno install -grA -n denox https://raw.githubusercontent.com/olavomello/denox/main/cli/main.ts
Або запустіть його без встановлення:
deno run -A https://raw.githubusercontent.com/olavomello/denox/main/cli/main.ts new my-shop
CLI — це самодостатній файл: жодних зовнішніх залежностей та жодних імпортів з самого фреймворку.
Створення проекту
Створення нового додатку здійснюється за одним командним запитом:
denox new my-shop
Скелет проєкту робить більше, ніж просто зберігає шаблон на диску. Він завантажує офіційний початковий код, видаляє історію змін у Git цього початкового коду, створює чистий репозиторій, встановлює значення поля версії назад на 0.1.0, очищує журнал змін, переписує файл README під нову назву та відповідним чином оновлює файл denox.config.ts.
Результат готовий до розробки, і він вже проходить перевірки deno task ci проєкту без необхідності ручного очищення.
Функціонують також користувацькі шаблони:
denox new my-app --template=<repository>
Створення повноцінної функціональності
Найсильнішою функцією CLI є можливість створити цілу функціональність у форматі MVC за один командний запит.
denox g feature reviews
Замість порожніх місць для заповнення генерація створює повний фрагмент API у форматі MVC: модель та DTO, інтерфейс репозиторію разом із реалізаціями в пам’яті та Deno KV, сервіс, контролер, маршрути, опис OpenAPI поруч із кодом та шаблон тесту на інтеграцію.
Реєстрація у src/api/main.ts відбувається автоматично, тож до цієї функції можна отримати доступ без додаткових налаштувань.
OpenAPI вбудований
Кожна створена функція має власний опис OpenAPI.
Наслідки:
- Документація знаходиться поруч із реалізацією
- Тести на паритет маршрутів продовжують проймати
- Під час запуску:
deno task insomnia
автоматично генерує колекцію Insomnia.
Немає необхідності вручну підтримувати окрему документацію API.
Безпечна генерація коду
CLI дотримується обережності під час змін існуючого коду.
Якщо маркер // denox:features відсутній або змінений, інструмент відмовляється створювати точку вставки.
Він все одно записує нові файли з функціями, виводить точні рядки, які потрібно вставити вручну, та не чіпає жодних існуючих файлів вихідного коду.
Неправильні назви або дублікати ідентифікаторів функцій зупиняють виконання команди до змін структури проекту.
Видалення функції
Зворотна операція є такою ж важливою, як і створення.
denox rm feature reviews
Видалення розроблене для того, щоб уникнути пошкоджених проектів.
CLI спочатку видаляє всі посилання на цю функцію в маршрутизаторах.
Лише після повного роз’єднання додатку файли видаляються.
Навіть якщо процес зупиняється на півдорозі, у проекті ніколи не залишаються посилання на відсутні файли.
Після завершення src/api/main.ts відповідає стану до генерації: немає безхазяйних посилань та зайвих порожніх рядків.
Попередній перегляд за допомогою:
denox rm feature reviews --dry-run
Основні модулі залишаються заблокованими. Спроби видалити вбудовані елементи — серед них автентифікація, користувачі, товари, оплати, інформація про здоров’я та контакти — відхиляються.
Оновлення фреймворку
Утримуйте проекти у актуальному стані за допомогою:
denox upgrade
Оновлення не перезаписують всю структуру. Змінюються лише шляхи, якими володіє фреймворк.
Ці шляхи чітко вказані у файлі .denox-core.json.
Усе, що знаходиться поза цим маніфестом, залишається недоторканим, включаючи:
- Створені функції
- Конфігурація проекту
- Файли середовища
- Код, специфічний для додатку
Додаткові режими оновлення:
denox upgrade --dry-run
denox upgrade --interactive
denox upgrade --ref=v1.2.0
Перед оновленням CLI перевіряє, чи є робоча структура Git чистою. Незатверджені зміни призводять до скасування операції, якщо тільки це не буде зроблено навмисно, що запобігає випадковій втраті даних.
Створення сторінок
CLI також підтримує маршрутизацію на основі файлів у фреймворку.
denox g page docs/faq
або
denox g page items/[id]
Після створення сторінки таблиця маршрутизації автоматично оновлюється.
Філософія DenoX CLI
CLI відображає принципи фреймворку: перевага усталених правил над налаштуваннями без втрати контролю.
Ці принципи проявляються у конкретних правилах: існуючі файли залишаються недоторканими, вручну змінені коди не переписуються, команди, які можуть пошкодити систему, пропонують опцію --dry-run, модулі, що належать фреймворку, не можна видаляти бездумно, OpenAPI завжди поєднується з маршрутами, а файли фреймворку залишаються окремими від коду додатку.
Усе це створює компактний та передбачуваний CLI: менше шаблонного коду, без приховування змін.