Интеграция композитора с устаревшей системой плагинов

Недавно я задумался о том, как интегрировать композитор с плагинами Wordpress. И да, прежде чем кто-либо предложит это, Wordpress является обязательным требованием. Я придумал несколько идей, но все они имеют довольно серьезные недостатки.

Первая система заключалась бы в том, чтобы просто включать пакеты композитора с каждым плагином (он же запускал установку композитора локально, а затем заархивировал папку поставщика с плагином для легкой загрузки). Преимуществами являются простота установки и простота. Проблемы возникают, когда несколько плагинов устанавливаются с одинаковыми зависимостями. Мало того, что он довольно раздут, но если между плагинами есть различия в версиях зависимостей, автозагрузчики будут портить друг друга, загружая только одну версию.

Другим вариантом было бы продолжать иметь пакеты композитора с каждым плагином, но также иметь другой плагин (мы назовем его плагином фреймворка), который просто имеет пакеты, которые будут использовать несколько плагинов. Преимуществом этого будет отсутствие дублированных пакетов, все плагины будут продолжать работать с версиями пакетов, поставляемых с плагином фреймворка; но на этом этапе будет много автозагрузчиков, что никогда не бывает хорошо, и управление версиями становится очень сложным.

Это, конечно, было бы намного проще, если бы я мог рассматривать свои плагины как пакеты композитора и иметь одну папку поставщика в корневом каталоге и устанавливать через командную строку композитора; но одним из требований этой системы является то, что плагинами можно управлять через ftp, а не через ssh.

Чем больше я об этом думаю, тем менее вероятным это кажется, я знаю, что композитор не был создан для этого; но есть ли у кого-нибудь мысли о том, как это может быть достигнуто?


person Ben    schedule 19.11.2013    source источник


Ответы (1)


Wordpress может быть полностью интегрирован с композитором — если вы используете библиотеку композитора/установщиков, вы можете включать плагины или темы. которые имеют свои собственные файлы composer.json с типом, установленным на wordpress-plugin или wordpress-theme, и он поместит их в правильное место (wp-content/themes, а не поставщик/).

Все общедоступные плагины и темы WordPress доступны через Wordpress Packagist — http://wpackagist.org/ вам просто нужно включить это в composer.json для всего проекта так:

{
    "name": "acme/brilliant-wordpress-site",
    "description": "My brilliant WordPress site",
    "repositories":[
        {
            "type":"composer",
            "url":"http://wpackagist.org"
        }
    ],
    "require": {
        "aws/aws-sdk-php":"*",
        "wpackagist/advanced-custom-fields":"*",
        "wpackagist/posts-to-posts":"1.4.x"
    },
    "autoload": {
        "psr-0": {
            "Acme": "src/"
        }
    }
}

Вы можете установить свои собственные плагины/темы для композитора, если они находятся в github (или аналогичном), добавив для них репо, например:

{
    "type": "vcs",
    "url": "https://github.com/YourUserName/MyWordPressPlugin.git"
},

Убедитесь, что у вас есть composer.json в репозитории git вашего собственного плагина с типом, установленным на wordpress-plugin или wordpress-theme. Просто добавьте свое имя в требуемую часть composer.json для проекта. Я часто делаю это для купленных плагинов — я создаю для них новое приватное репо и добавляю composer.json.

Когда дело доходит до развертывания, вы не сможете запустить установку композитора на удаленном сервере, но вы можете просто использовать FTP из рабочей копии, где вы запустили команду установки. Или, если вы используете Git, вы можете настроить хук для отправки, который экспортирует проект, запускает установку композитора, а затем FTP.

person madebydavid    schedule 23.11.2013
comment
Спасибо, что нашли время написать это. На самом деле я тоже проводил много исследований в этом направлении; и, похоже, так и будет. Изучение возможности изменения wpackagist для поддержки тем и настройки Satis для частных плагинов; вместе они должны творить чудеса. Это также решит некоторые проблемы, которые у нас были с git и WordPress. Спасибо! - person Ben; 24.11.2013