Composer – частина 3. Схема composer.json

Схема файлу composer.json на прикладі Laravel

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework"
    ],
	"license": "MIT",
    "require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/tinker": "^2.0",
        "maatwebsite/excel": "^3.1",
        "symfony/dom-crawler": "^5.0"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.2",
        "facade/ignition": "^1.4",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
	"autoload": {
	    "psr-4": {
	        "App\\": "app/"
	    },
		"classmap": [
	        "database/seeds",
	        "database/factories"
	    ]
	},
	"autoload-dev": {
	    "psr-4": {
	        "Tests\\": "tests/"
	    }
	},
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
		"post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
		"post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}
  • name – ім’я пакету, який складається з імені виробника і назви проекту, розділених “/” (обов’язкове для публікації)
  • description – короткий опис пакету (обов’язкове для публікації)
  • type – тип пакету (по замовчуванню library). Тп визначає спеціфічну логіку при інсталяції. Доступні типи: library, project, metapackage, composer-plugin
  • keywords – ключові слова, які можуть бути використані для пошуку
  • license – ліцензія пакету (зазвичай MIT)
  • require – перелік необхідних пакетів (залежностей). Пакет не буде встановлений, якщо ці вимоги не будуть виконані (якщо проект в статусі staging, production).
  • require-dev – перелік пакетів, які використовуються для розробки пакета, наприклад тестів, тощо (всі статуси проекта).
    * composer install (update) – проінсталює всі пакети з require та require-dev, composer install –no-dev – проінсталює виключно ті пакети, які в складі require. Таким чином реалізована можливість на production ставити не всі пакети.
  • autoload – автозавантаження для PHP. Підтримує psr-4, psr-0, classmap та files.
  • autoload-dev – аналогічно autoload але лише для потреб розробки (development).
  • minimum-stability – вказує мінімальні вимоги до типу стабільності пакету (dev, alpha, beta, RC, stable). По замовчуванню stable, більшість проектів (в тому числі і Laravel) використовують значення dev.
  • prefer-stable – у випадку ввімкненого значення, Composer буде надавати перевагу стабільній версій в порівнянні з версією dev.
  • repositories – довзоляє визначити репозиторії для використання.
  • config – встановлення параметрів конфігурації. Має близько 40 параметрів, серед основних:
    • optimize-autoloader – по замовчуванню: false, відповідає за оптимізація autoloader (конвертування PSR-4 та PSR-0 в правила classmap vendor/composer/autoload_classmap.php). Таким чином пришвидшується пошук класу, так як немає необхідності кожного разу робити пошук по диску.
    • preferred-install – цей параметр дозволяє вказати метод інсталяції Composer. По замовчуванню – auto, може бути source, dist або auto.
    • sort-packages – по замовчуванню – false. При значенню true, після команди require при додаванні нового пакету він буде відсортований по імені в файлі composer.json
  • scripts – Composer дозволяє робити зміни в процесі інсталяції пакетів з використанням скриптів. Наприклад, для Laravel:
    • post-autoload-dump – відбувається після дампу autoloader, тобто після команд install, update або dump-autoload. Для Laravel відбувається автодіскавері встановлених пакетів.
    • post-root-package-install – викликається після інсталяції кореневого пакету, під час виконання команди create-project. В Laravel використовується для копіювання конфігураційного файлу .env
    • post-create-project-cmd – виконується після команди create-project. В Laravel використовується для генерації унікального ключа.
  • extra – додаткові перемінні для використання в scripts. Наприклад, в Laravel за допомогою цього параметру вказується відключення автоматичного визначення певного пакету.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *