Пакет розширення
Структура каталогу, маніфест, переклади й збирання ZIP скриптом package_artifact.py.
Розширення — це PHP-пакет із маніфестом. Приклади офіційних розширень (Checkbox, Нова Пошта, Stripe) лежать у репозиторії laracart-extensions/official.
my-extension/
manifest.json # маніфест (див. «Поля маніфесту»)
composer.json # PSR-4, напр. "Acme\\Delivery\\": "src/"
src/ # PHP-класи, зокрема точки входу з entrypoints
translations.json # який каталог перекладу для якої мови
lang/uk.json
lang/en.json
assets/ # за потреби - translations.json: {"manifest_contract_version": 1, "namespace": "extension.<код>", "catalogs": {"uk": "lang/uk.json", "en": "lang/en.json"}} — від 1 до 50 мов, лише дані, без коду.
- Ключі перекладів мають вигляд extension.<код>.name, extension.<код>.settings.api_key тощо.
- Таблиці розширення описуються файлами *.migration.json (create_table, add_columns, add_indexes); SQL і PHP-міграції не приймаються — платформа виконує їх сама у власному просторі імен розширення.
- Файл extension.json у вихідному каталозі створювати не треба: його генерує пакувальник.
Збирання й перевірка архіву:
python scripts/package_artifact.py build ./my-extension dist ./private-key.pem my-key-id
python scripts/package_artifact.py verify dist/<code>-<version>.zip dist/<code>-<version>.manifest.json dist/<code>-<version>.checksum ./public-key.pem - Пакувальник збирає детермінований ZIP і кладе в нього extension.json — канонічний маніфест.
- В архів не потрапляють manifest.json, .git, vendor, node_modules, dist, __pycache__, .DS_Store і символьні посилання.
- Результат: <code>-<version>.zip, .checksum (SHA-256), .manifest.json — це і є JSON публікації, який ви додаєте в поданні.
- Потрібен OpenSSL 3.x (змінна LARACART_OPENSSL_BIN, якщо він не в PATH).