В статье Менеджеры Js/Css библиотек мы рассматривали какие есть варианты использования менеджеров зависимости. В данной статье мы рассмотрим как использовать Component для Symfony2.
Настройки для Component
В файле composer.json добавим
{
"config": {
//…
"component-dir": "web/components",
"component-baseurl": "/components"
}
}
Параметр component-dir указывает куда копировать необходимые нам файлы скриптов, стилей или картинки указанные в настройках библиотек. И component-baseurl это настройка для requirejs указывает путь который доступен из браузера.
Установка библиотек типа component
Установка в таком случае ничем не отличается от стандартной установки например components/bootstrap, просто выполняем команду composer require components/bootstrap
Библиотека скачивается в нашем случае в папку vendor, но файлы указанные в настройках composer.json
{
"extra": {
"component": {
"scripts": [
"js/bootstrap.js"
],
"files": [
"js/*.js",
"css/*.css",
"css/*.map",
"fonts/*",
"less/mixins/*.less",
"less/*.less"
],
"shim": {
"deps": ["jquery"]
}
}
}
}
Копируют в папку web/components файлы указанные в files. Также добавляется конфигурация в requirejs, например зависимости библиотеки.
Библиотека без поддержки component
Библиотека добавлена в composer, только без подержки component например bootstrap-select/bootstrap-select. Добавляем в composer.json
{
"require": {
"robloach/component-installer": "*",
"bootstrap-select/bootstrap-select": "~1.7"
},
"extra": {
"component": {
"bootstrap-select/bootstrap-select": {
"scripts": [
"dist/js/bootstrap-select.js"
],
"files": [
"dist/js/*.js",
"dist/js/i18n/*.js",
"dist/js/*.map",
"dist/css/*.css",
"dist/css/*.map",
"less/*.less"
],
"shim": {
"deps": [
"jquery"
]
}
}
}
}
}
Устанавливаем командой composer update bootstrap-select/bootstrap-select.
Библиотеки без поддержки composer
Очень часто библиотеку добавляют в bower, реже в component, и очень редко добавляют в packagist. Для добавления такой библиотеки, воспользуемся инструкцией и добавим в composer.json
{
"require": {
"robloach/component-installer": "*",
"google/code-prettify": "dev-master"
},
"repositories": [
{
"type": "package",
"package": {
"name": "google/code-prettify",
"type": "component",
"version": "master",
"source": {
"url": "https://github.com/google/code-prettify",
"type": "git",
"reference": "master"
},
"extra": {
"component": {
"scripts": [
"src/prettify.js"
],
"styles": [
"src/prettify.css"
]
}
},
"require": {
"robloach/component-installer": "*"
}
}
}
]
}
Установим командой composer update google/code-prettify
Выводы
Используя composer и robloach/component-installer очень легко следить за js/css библиотеками и поддерживать актуальные версии. Единственное хотелось бы чтобы разработчики добавляли свои библиотеки не только в bower, но и в другие менеджеры где возможно использовать библиотеку. В данном случае разработчик использует что ему удобно. Одно из преимуществ данного подхода это то, что только необходимые нам файлы доступны из браузера. Для более детального изучения настроек воспользуетесь документацией.