Есть ли PHP-пакет, похожий на Webpack узла

#php #node.js #webpack #bundler #slim

#php #node.js #webpack #пакетник #тонкий

Вопрос:

Я написал приложение REST-API с использованием PHP Slim4 framework. Однако теперь, когда я хочу развернуть приложение. Кажется, я не могу найти интуитивно понятный инструмент, такой как webpack, чтобы объединить мое приложение в несколько файлов и выполнить встряхивание дерева для любого неиспользуемого кода.

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

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

Ответ №1:

Вам не нужно трясти дерево в PHP, вы можете загружать необходимые классы с помощью отложенной загрузки. Для этого вам нужна автозагрузка, которая может загружать файл класса, когда класс необходим.

Вместо того, чтобы самостоятельно реализовывать логику, вы должны использовать стандарт де-факто composer и использовать соглашение PSR-4, чтобы пути к вашим файлам соответствовали вашим пространствам имен.

Если вы действительно хотите иметь все в одном файле, вы можете использовать phar «архив», вы можете сделать это вручную или с помощью таких инструментов, как box, но вам это не нужно для развертывания кода в рабочей среде, обычно это не требуется.

Комментарии:

1. да, я использую пространства имен и автозагрузчик composer. Однако, как я могу удалить все комментарии и пробелы из скриптов? есть также несколько параметров (в файле ввода), которые мне нужно переключать при переходе к производству. Например, отображение ошибок превратилось в false и т. Д.

2. Вы должны использовать «dotenv» ( 12factor.net ), например, этот проект github.com/vlucas/phpdotenv загрузит файл .env в качестве переменных среды. Тогда вы можете условно делать что-то для разработчиков или разработчиков.

3. Спасибо за упоминания Box и DotEnv, это отличные инструменты, которые действительно хорошо подходят для этой темы. Следует ли использовать Box для инкапсуляции приложений для развертывания в средах CI / CD или это будет плохой практикой?

4. Для тестирования он вам не понадобится, вы можете протестировать свой исходный код непосредственно на CI, потенциально может быть удобно использовать box, если вы хотите создать «сборку» для совместного использования или развертывания, но часто в этом нет необходимости. В отличие от js, вы развертываете php-код в рабочей среде без преобразований, потому что это серверная часть.

Ответ №2:

Вы можете использовать composer для создания оптимизированной сборки вашего приложения. Все зависимости от разработчиков удалены, а автозагрузчик Composer оптимизирован для производительности.

Запустите эту команду в том же каталоге, что и файл composer.json проекта:

 composer install --no-dev --optimize-autoloader
  

Вам не нужно запускать composer на вашем рабочем сервере. Для создания «артефакта» развертывания вы можете использовать Apache Ant.