Как реализовать в своем проекте composer корневые файлы вне папки vendor?
Разрабатываю библиотеку (микрофреймворк). Решил завезти управление миграциями. Для этого у меня в корневой папке проекта /var/www/project/ есть файл sql-migration, который выполняет определенную логику. К нему идет обращение через консоль. php sql-migration create [NAME].
Как я понял, если мы делаем проект, который хотим поместить в packagist.org, то он при инициализации в другом месте поместиться в папку vendor/developername/project/. А как мне сделать, чтобы корневые элементы (ядро проекта) было в vendor, а файл sql-migration в корне папки инициализации? Например, как это реализовано в Yii.
Ответы (1 шт):
На самом деле, решение достаточно простое. Необходимо было создать 2 репозитория: ядро и скелет. Ниже я приведу composer.json обоих проектов, которые были выложены на packagist.org.
Ядро:
{
"name": "kernel",
"description": "",
"license": "",
"keywords": [
"",
],
"authors": [
{
"name": "",
"email": ""
}
],
"require": {
"php": "^7.4|^8.0"
},
"autoload": {
"psr-4": {
"kernel\\": "kernel"
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
Скелет:
{
"name": "mepihindeveloper/skinny-php-skeleton",
"type": "project",
"description": "",
"license": "",
"keywords": [
"",
],
"authors": [
{
"name": "",
"email": ""
}
],
"require": {
"php": "^7.4|^8.0",
"userName/kernel": "^1.0"
},
"autoload": {
"psr-4": {
"kernel\\": "kernel"
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
Как видите, тут скрыта некоторая информация, но вся суть в том, что ядро имеет тип type по-молчанию и является библиотекой. А скелет проекта имеет type project. В зависимостях было указано ядро и его версия.
Запуске всего чуда была таким: composer create-project ТУТ_СКЕЛЕТ ИМЯ_ПРОЕКТА. create-project выполняет как pull, так и install всех зависимостей сразу.