Composer Windows совместимые скрипты

Я столкнулся с небольшой проблемой здесь. Я пытаюсь использовать скрипт композитора для линковки моего проекта PHP. Пока что я создал файл композитора и ввел в него несколько сценариев. Мой фрагмент файла композитора выглядит примерно так:

"scripts": {
"document": "vendor/bin/apigen generate -s ./src -d ./docs",
"codecept": "vendor/bin/codecept",
"test": "vendor/bin/codecept run",
"lint": "vendor/bin/phpcs --standard=PSR2 src",
"bootstrap": "composer install && composer codecept bootstrap"}

Я уже определил зависимости, и она отлично работает на POSIX-совместимых машинах (ОС на базе MAC / Linux), но когда кто-то, использующий Windows, хочет использовать любой из сценариев, он просто не работает.

Проблема, с которой я сталкиваюсь, у меня есть / как разделитель каталогов, но Windows понимает \ Я думал, что окна достаточно умны, чтобы автоматически конвертировать это.

Грязное решение, о котором я думаю, было бы иметь команду windows-lint, которая действительно очень раздражает. Я просто хотел знать, что делают другие люди, когда хотят работать на нескольких ОС.

Заранее спасибо!

3

Решение

Просто используйте скрипты без указания vendor/bin путь, это будет сделано композитором автоматически, см. Заметка раздел в https://getcomposer.org/doc/articles/scripts.md#writing-custom-commands

"scripts": {
"document": "apigen generate -s ./src -d ./docs",
"codecept": "codecept",
"test": "codecept run",
"lint": "phpcs --standard=PSR2 src",
"bootstrap": "composer install && composer codecept bootstrap"}
5

Другие решения

Я думал о той же проблеме, может быть несколько решений.

Интерпретатор сценариев оболочки различается на разных платформах, и довольно сложно сделать что-то «универсальное».

Но вы можете использовать только чистый PHP. Документы композитора это довольно хорошо. Ваш PHP должен быть в состоянии легко адаптировать вещи для случая Windows или для случая POSIX.

Однако вам может не понравиться оборачивать команды вызова внешних программ и команд оболочки внутри PHP.

Например, вы бы запустили виртуальную машину Linux, определяемую бродяга файл, а затем запустите композитор через «vagrant ssh».

Плюсы:

  • Одна и та же оболочка для всех

  • Правильное определение среды Vagrant может упростить разработчикам множество локальных тестов, удалив известное «это работает на моей машине». Каждый разработчик имеет «ту же» локальную среду.

Минусы:

  • Некоторые первоначальные настройки (включая двустороннюю синхронизацию папки проекта с соответствующими разрешениями), множество примеров в Интернете могут помочь.

  • Для локального запуска ВМ требуется достаточно ОЗУ.

Не используйте стандартную оболочку для запуска composer. Есть много других вариантов, в том числе:

  • Cygwin (я бы не использовал его, если бы я мог избежать, однако)

  • git bash (что-то вроде MINGW32, которое можно легко установить с помощью клиента git, использование git не обязательно)

2

Я создал пакет composer, который преобразует косую черту в обратную косую черту, если выполняется в ОС Windows.

В ваш composer.json вам просто нужно добавить:

{
"require": {
"instituteweb/composer-scripts": "^1.0",
},
"scripts": {
"test": [
"\\InstituteWeb\\ComposerScripts\\ImprovedScriptExecution::apply",
"vendor/bin/whatever"]
}
}

Поэтому, когда вы выполняете composer run test, это будет работать на Unix и ОС Windows.

Как это устроено:

применять метод в очереди сценариев, останавливает распространение исходной команды «test». Вместо этого он создает и выполняет новую команду с именем «_test» (prepends underscore), которая содержит исходные команды, только с преобразованными косыми чертами.

Просто команды после применять вызов метода затронут.

Ссылка на пакет: https://packagist.org/packages/instituteweb/composer-scripts

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector