Менеджеры Js/Css библиотек при работе над Symfony проектом

В процессе разработки, нам необходимо использовать стороние библиотеки, и соответсвенно необходимо централизованно их устанавливать. Прошли те времена когда для того чтобы поставить библиотеку, надо было скачать скрипты и распаковать их себе в проект. Сейчас для этого используют менеджеры библиотек, их очень много например: Сomposer, Bower, Npm, Component и другие.
В проектах на Symfony2 используется Composer, но им не очень удобно устанавливать js/css библиотеки, поскольку все библиотеки ставятся в папку которая не должна быть доступна из браузера. Мы рассмотрим какими способами в Symfony2 проекте можно ставить js/css библиотеки, некоторые способы подойдут любому проекту в котором используется Composer.

Bower

Для менеджера пакетов nodejs проектов возможно использовать bower. В нашем случае конечно проект не на nodejs, но мы можем bower поставить отдельно и использовать sp/bower-bundle который позволяет из командной строки и устанавливать библиотеки. Установить и настроить его достаточно просто об этом можно прочитать в документации к библиотеке.

Плюсы:

  • использует bower. Можно использовать все возможности bower.json.
  • есть скрипты для установки и обновлении в composer.

Минусы:

  • необходимо дополнительно ставить bower, через npm.
  • устанавливает js/css библиотеки в указанный Bundle, также там хранит свой cache. При использовании capifony нам надо будет правильно указывать путь с cache, чтобы пакеты не устанавливались каждый раз при обновлении.

Вывод

Вполне рабочий вариант. Если используете capifony не забывайте добавлять папку с библиотеками в параметр shared_children и правильно указывать папку для кэш.

Bowerphp

Нам в процессе разработки все-же хочется иметь меньше “ручных” зависимостей, которые надо устанавливать дополнительно, а не средствами composer. Был найден вариант с bowerphp это библиотека реализует bower на PHP, используя компоненты Symfony. Но это библиотека, поэтому для работы на Symfony Framework был сделан fdevs/bower-php-bundle. Установка ни чем не отличается от установки стандартных библиотек, подробнее можно прочитать в документации.

Минусы:

  • у библиотеки bowerphp еще нет стабильной версии, поэтому есть ошибки. К примеру, с чем я столкнулся, не всегда правильную версию библиотеки ставит.

Плюсы:

  • нет зависимости от nodejs библиотек. Все ставится с помощью composer.
  • пути настраиваются какие удобно.
  • для указания библиотек использует настройки bower.json. Поэтому можно использовать bower если чем-то библиотека не подходит.

Выводы

Мне вариант понравился больше предыдущего - можно работать только с composer. Но из-за того что не всегда верно ставит версии библиотек, пришлось от него отказаться. Есть надежда что проект будет развиваться и когда появится стабильная версия ошибок будет меньше.

composer-asset-plugin

Для контроля js/css есть плагин fxp/composer-asset-plugin. Поставить его еще проще и можно прочитать в документации к плагину. Работает он с любыми проектами в которых используется composer.

Минусы:

  • ставит все что находится в пакете в указанную папку. Даже архивы или демо данные.

Плюсы:

  • работает не только с bower, но и с npm.

Выводы

Я его очень мало использовал, но не могу не упомянуть. Возможно это один из лучших вариантов, поскольку подходит любому проекту.

component

Кроме composer и bower есть еще один менеджер пакетов - component. Для использования в composer есть плагин component-installer. В нем можно указать в какой каталог собирать необходимые нам файлы или папки. Ставит саму библиотеку он все равно в vendor, но копирует файлы указаны в его настройках в папку указаную в настройках composer. Создает также файл для работы с библиотекой requirejs, поэтому данный вариант больше всего подходит если вы используете данную библиотеку. У данного плагина есть возможность ставить библиотеки которые не используют никакие менеджеры, или которые используют только composer.

Минусы:

  • не все необходимые библиотеки есть в component. Это конечно все можно описать в composer и для нас достаточно чтобы библиотека была только на публичном репозитории.

Плюсы:

  • не использует ничего кроме composer.
  • создает requirejs для работы с библиотеками.

Выводы

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

Заключение

При разработке на Symfony и не только, менеджер библиотек composer позволяет работать не только с php библиотеками но и с js/css, а также с npm. Времена когда, чтобы использовать стороний код надо было его перенести в проект и следить за багами самому прошли.

Читайте также:

Изпользование CSS вместе с RequireJS

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

Как избегать распространенных ошибок в JavaScript

Время от времени все мы делаем ошибки. Это может произойти по многим причинам: недостаток опыта, плохое настроение, поджимают сроки сдачи, головная боль и т.д. Не смотря на то, что какие-то моменты в JavaScript'е могут казаться незначительными, они могут стать причиной серьезных проблем и ночной отладки кода в будущем. Поэтому вне зависимости от внешних факторов вы должны уделять внимание деталям во время программирования. Я хочу дать вам пару советов для улучшения всей этой ситуации.

Звездный рейтинг

Доброго времени суток дамы и господа. С помощью этой статьи я хотел бы познакомиться с вами, а заодно опробовать себя в качестве автора. А для того чтобы это знакомство не проходило зря, мы рассмотрим с вами некоторые варианты создания инструмента для оценки чего либо. В интернете прижился такой визуальный элемент как “звездочки”: К примеру: Хотя в последнее время все больше используются оценочные инструменты со сторонних сервисов, например “лайки” от Facebook'a или от Вконтакте, которые позволяют оценить материал только в положительном ключе. Хорошо это или плохо, мы с вами решим как - нибудь в другой раз, а сейчас давайте рассмотрим несколько вариантов реализации традиционных “звездочек”.