2016-09-09 5 views
3

Здесь я столкнулся с небольшой проблемой. Я пытаюсь использовать скрипт композитора, чтобы использовать мой 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 (OS на основе MAC/Linux), но когда кто-то, кто использует окна хочет использовать любого сценариев, он просто не работает.

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

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

Заранее благодарен!

+0

Интересный вопрос, кстати, один, возможно, захотите сделать что-то совместимое с окнами, не видя результат своими глазами. – dotpush

ответ

2

Просто используйте скрипты без указания 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" 
} 
2

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

Вариант 1, не сценарий оболочки, чистый PHP только

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

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

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

Вариант 2, запускать скрипты в Linux VM

Вы бы, например, запустить на Linux VM, определенную Vagrant файл, а затем запустить композитор корыта «бродячий SSH».

Плюсы:

  • же оболочка для всех

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

Минусы:

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

  • Запуск виртуальной машины на локальном компьютере требует достаточного объема оперативной памяти.

Вариант 3, используйте другой снаряд, чем CMD на Windows,

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

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

  • мерзавца Баш (что-то вроде Mingw32, который может быть легко установлен с клиентом мерзавца , используя мерзавец не является обязательным)

0

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

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

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

Итак, когда вы выполняете composer run test, он будет работать на Unix и Windows OS.

Как это работает:

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

Только команды послеприменяются к применению.

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

Смежные вопросы