Скажем, у меня есть два или три проекта, и все они используют разные стандарты PHP CodeSniffer (на заказ).
Я хотел бы иметь возможность включать их как require-dev
зависимости от Composer, так что при раскрутке репозитория проекта они будут установлены вместе с PHPUnit и другими моими требованиями разработчика.
В настоящее время у меня есть все стандарты на моей машине phpcs
папка стандартов, и я говорю каждому проекту, какой стандарт использовать через phpcs.xml
файл конфигурации в корне проекта.
Можно ли указать путь к стандарту, чтобы его можно было установить и использовать через composer?
Вы можете указать дополнительный путь для phpcs
искать стандарты в использовании installed_paths
установка. Вот пример phpcs.xml
конфигурация:
<?xml verison="1.0"?>
<ruleset name="MyProject">
<description>My cool project, using a custom PHPCS standard</description>
<rule ref="MyCoolStandard" />
<config name="installed_paths" value="vendor/myvendorhere" />
</ruleset>
Тогда предположим, что ваш пользовательский стандарт PHPCS имеет такую структуру файлов:
+ MyCoolStandard - нюхает - занятия - MyClassSniff.php - ruleset.xml
Вы можете добавить основной composer.json
файл к нему и дать ему имя. Важной частью здесь является то, что вам нужно будет указать это для установки в путь, который соответствует стандартному названию — или проще просто Назовите пакет как ваш стандарт (примечание: должно совпадать ruleset.xml
в стандартном случае, чехол включен):
{
"name": "myvendorhere/MyCoolStandard",
"description": "My cool PHPCS standard",
"require": {}
}
Теперь вы можете просто включить его в качестве хранилища VCS в свой проект:
# Project: composer.json
...
"repositories": [
{
"type": "vcs",
"url": "[email protected]:myvendorhere/myreponame.git"}
],
"require-dev": {
"myvendorhere/MyCoolStandard": "dev-master"}
...
installed_paths
Параметр конфигурации CodeSniffer, указывающий путь поставщика вашего композитора (вплоть до папки, названной в честь вашего стандарта) в качестве стандартного путиruleset.xml
чтобы phpcs
может найти его, в противном случае вы получите ошибки, говорящие, что это не может быть найдено.Других решений пока нет …