Создание проекта
Новый проект создаётся одной командой. Она скачивает стартовый набор (starter kit) — заготовку приложения с уже настроенными пакетами — и устанавливает зависимости.
Команда создания
Откройте терминал в папке, где будут лежать проекты, и выполните:
npm init adonisjs@latest blogПрограмма задаст несколько вопросов. Главный из них — какой стартовый набор взять:
| Набор | Для чего |
|---|---|
| Web | Сайт с HTML-страницами на шаблонах Edge |
| API | Только JSON API, без страниц |
| Slim | Минимальное ядро, всё остальное ставится вручную |
| Inertia | Страницы на React или Vue поверх AdonisJS |
Для блога выберите Web. Набор можно указать сразу флагом: npm init adonisjs@latest blog -- --kit=web. Затем программа спросит базу данных — для начала подойдёт SQLite, ей не нужен отдельный сервер, — и способ входа: выберите session.
Запуск
cd blog
node ace serve --hmrКоманда запускает сервер разработки. Откройте http://localhost:3333 — появится стартовая страница AdonisJS. Флаг --hmr означает, что после правки файла сервер подхватит изменения без перезапуска. Остановить сервер можно сочетанием Ctrl+C. Та же команда записана в package.json как npm run dev.
Папки проекта
blog/
├── app/
│ ├── controllers/ контроллеры
│ ├── exceptions/ обработчик ошибок
│ ├── middleware/ middleware
│ ├── models/ модели Lucid
│ └── validators/ правила проверки форм
├── bin/ файлы запуска: server.ts, console.ts, test.ts
├── config/ настройки пакетов
├── database/
│ └── migrations/ миграции
├── resources/
│ ├── views/ шаблоны Edge
│ ├── css/ js/ стили и скрипты для Vite
├── start/
│ ├── routes.ts маршруты
│ ├── kernel.ts список middleware
│ └── env.ts проверка переменных окружения
├── tests/ тесты
├── .env настройки этого компьютера
├── adonisrc.ts настройки самого фреймворка
├── ace.js вход в консоль Ace
└── package.jsonНекоторых папок, например validators, сразу может не быть: они появятся, когда вы создадите первый файл такого типа.
Короткие импорты
В package.json есть раздел imports. Он задаёт короткие пути, которые начинаются с #:
// app/controllers/posts_controller.ts
import Post from '#models/post'
import { createPostValidator } from '#validators/post'#models/post означает файл app/models/post.ts. Так не нужно писать длинные пути вида ../../models/post.js.
Частая ошибка
Команда node ace serve работает только внутри папки проекта: там лежит файл ace.js. Если запустить её из родительской папки, Node.js сообщит, что не может найти модуль ace.js. Сначала перейдите в проект командой cd blog.