Пакети для Laravel: бекапи, генерування міграцій, pdf та скріншоти

Пакети для Laravel: бекапи, генерування міграцій, pdf та скріншоти

Будет делать бэкапы файлов проекта и базы данных тогда, когда скажете. 6-я версия пакета требует PHP 7.3, может работать с MySQL, PostgreSQL и MongoDB.

spatie/laravel-backup

Пакет від бельгійців Spatie. Робитиме бекапи файлів проекту і бази даних тоді, коли скажете. 6-а версія пакету потребує PHP 7.3, щодо БД - може працювати з MySQL, PostgreSQL і MongoDB. Гарна документація. Інсталяція:

composer require spatie/laravel-backup

 

Щоб опублікувати конфігурацію виконайте команду:

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

 

В результаті в папку config буде скопійований файл backup.php, в якому можна налаштувати все що потрібно, а саме:

  • файли який (базової) директорії включити в бекап, які піддиректорії виключити (наприклад, node_modules, vendor)  
  • куди зберігати бекапи і скільки часу їх зберігати
  • максимальний обсяг пам'яті під бекапи (якщо вказаний розмір буде перевищено, найстаріші будуть видалені)  
  • які нотіфікейшни і куди відправляти (пошта, Slack)

Слід помістити виклик команд в планувальник завдань. Наприклад:

// app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
   $schedule->command('backup:clean')->daily()->at('01:00');
   $schedule->command('backup:run')->daily()->at('02:00');
}

 

При цьому не забудьте про черги

Однозначно рекомендую. Особисто я тепер ставлю даний пакет на усі проекти.

xethron/migrations-generator

Генерує міграції на основі існуючої бази даних. Здавалося б навіщо? Реальна ситуація: прийшов проект на laravel, в якому немає міграцій. При цьому потрібно було дописувати новий функціонал, в тому числі додавати поля і нові таблиці. Зрозуміло, також потрібно було написати тести. Ось тут і знадобився migrations-generator.

Слід розуміти, що пакет не може знати потрібну послідовність міграцій, цю роботу доведеться зробити самому. Крім того, для зовнішніх ключів будуть згенеровані окремі міграції, що, як на мене, не дуже то зручно. Після запуску команди я переніс ключі до відповідних файли міграцій.

Установка:

composer require --dev "xethron/migrations-generator"

 

Використання:

php artisan migrate:generate

 

Можливо, Ви так і ніколи і не зіткнетеся з подібною ситуацією. Але якщо так вже складеться - повірте, з даними пакетом головного болю буде набагато менше.

spatie/browsershot

Ще один чудовий пакет від Spatie. Конвертує html в зображення або pdf. Рекомендую уважно ознайомиться з документацией, оскільки є нюанси при установці. Якщо все ж буде вилітати помилка:

libX11-xcb.so.1: cannot open shared object file: No such file or directory

... тут знайдете вирішення проблеми.  

Пакет багатий можливостями і при цьому дуже простий у використанні. Наприклад, згенерувати pdf сторінки сайту:

Browsershot::url('https://example.com')->savePdf('example.pdf');

 

або конвертувати html в pdf:

Browsershot::html($someHtml)->savePdf('example.pdf');

 

Дозволяє встановити ширину і висоту, відступи і т.д.:

// Specify paper size
Browsershot::html($someHtml)
   ->paperSize($width, $height)
   ->save('example.pdf');

// Set format size
Browsershot::html('https://example.com')->format('A4')->save('example.pdf');

// Set margins
Browsershot::html($someHtml)
   ->margins($top, $right, $bottom, $left)
   ->save('example.pdf');

 

Почитайте документацію пакета - не пошкодуєте. Цілком ймовірно, знайдете те, що потрібно саме Вам.

На сьогодні все. Успіхів!