Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Консоль Ace

Ace — консоль AdonisJS. Это набор команд, которые запускаются через node ace и выполняют рутинную работу: создают контроллеры и модели по шаблону, запускают миграции, ставят пакеты. Аналог Artisan в Laravel.

Список команд

node ace list

Команда печатает все доступные команды, сгруппированные по темам: make, migration, db и другие. Подробности о любой команде показывает флаг --help:

node ace make:controller --help

В ответ вы увидите аргументы и флаги команды с описаниями.

Создание файлов

Команды группы make создают файлы в нужной папке и с правильным именем:

node ace make:controller posts

Появится файл app/controllers/posts_controller.ts с пустым классом PostsController. Имена файлов в AdonisJS пишутся в snake_case — слова через подчёркивание.

КомандаЧто создаёт
make:controller postsapp/controllers/posts_controller.ts
make:model Postapp/models/post.ts
make:migration postsфайл в database/migrations/
make:validator postapp/validators/post.ts
make:middleware log_requestsфайл в app/middleware/
make:view posts/indexresources/views/posts/index.edge

Установка пакетов

Официальные пакеты AdonisJS ставятся командой add. Она устанавливает пакет через npm и сразу настраивает его: создаёт файл в config/, дописывает переменные в .env, регистрирует провайдер в adonisrc.ts.

node ace add @adonisjs/mail

Если пакет уже установлен через npm, настроить его можно командой node ace configure @adonisjs/mail.

Своя команда

Можно написать и свою команду. Создайте её:

node ace make:command greet

Откройте созданный файл и допишите аргумент и метод run:

// commands/greet.ts
import { BaseCommand, args } from '@adonisjs/core/ace'
 
export default class Greet extends BaseCommand {
  static commandName = 'greet'
  static description = 'Поприветствовать пользователя'
 
  @args.string()
  declare name: string
 
  async run() {
    this.logger.info(`Привет, ${this.name}!`)
  }
}

Теперь node ace greet Анна выведет в терминал строку «Привет, Анна!». Свойство commandName задаёт имя команды, декоратор @args.string() объявляет аргумент.

REPL

Команда node ace repl открывает интерактивную консоль, в которой загружено приложение. В ней удобно проверять запросы к базе, не создавая страниц.

Частая ошибка

Команды make не перезаписывают существующие файлы: если posts_controller.ts уже есть, Ace сообщит об этом и ничего не создаст. Не удаляйте файл ради повторного запуска команды — вы потеряете написанный код. Нужен другой файл — дайте ему другое имя.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.