Подскажите, есть ли библиотека на PHP для подключения js+css загруженные пакетов через менджер bower

Активист

Активист
Команда форума
Сабж.

Условно надо: $layout->addBowerPkg("jqueryui");

Который парсит метаданные (json) пакета, подключает их + подключает зависимости.
 

Redjik

Джедай-мастер

Активист

Активист
Команда форума
Что не привествуешь? Пакетный менеджер? Гораздо проще управлять пакетами JS - Бутстрап, и Wow и Font Awesome, и еще масса свистелок и перделок. Я в Linux сижу и мне так удобнее)) просто делаю комманду bower install animate и тот сам все что надо качает, и устанавливает, с зависимостями. Надо обновить - делаю bower update font-awesome.

По поводу ссылки, какжеться это не то - это пакетный менеджер? Composer? или я что-то не понял)

При использовании пакетов (компотеннтов) есть такие файлы:
Код:
~/bower_components# cat jquery-bridget/bower.json
{
  "name": "jquery-bridget",
  "version": "1.0.1",
  "main": "jquery.bridget.js",
  "description": "Bridget makes jQuery widgets",
  "devDependencies": {
    "jquery": ">=1.4.2",
    "qunit": "~1.10"
  }
}
Код:
cat jquery.nicescroll/bower.json
{
    "name": "jquery.nicescroll",
    "version": "3.5.4",
    "main": [
        "./jquery.nicescroll.js",
        "./zoomico.png"
    ],
    "ignore": [
        "**/.*",
        "demo",
        "package.json"
    ],
    "dependencies": {
        "jquery": ">=1.4.3"
    }
}
Код:
cat jquery-minicolors/component.json
{
    "name"         : "jquery-minicolors",
    "version"      : "2.1.10",
    "description"  : "jQuery MiniColors Plugin",
    "homepage"     : "",
    "main"         : [ "./jquery.minicolors.js", "./jquery.minicolors.css" ],
    "dependencies" : {
        "jquery" : ">= 1.7.x"
    },
    "keywords"     : [
    ],
    "author" : {
        "name" : "Cory LaViska",
        "web"  : "http://www.abeautifulsite.net/"
    },
    "license": [
        "http://www.opensource.org/licenses/mit-license.php"
    ]
}

Так вот, хочется найти либу, которая бы в шаблон вставляла нужные CSS и JS при подключении скажем jquery.nicescroll - подключала "./jquery.nicescroll.js", а также и зависимость jquery.
 

Adelf

Administrator
Команда форума
Так рулить неправильно.

Подключишь один, второй. Оба хотят jQuery. Надо решать такие конфликты. Потом захочешь все-таки нормально оптимизировать статику и это превратится в сущий гемор, ибо при оптимизации(собирание всех файлов с зависимостями в один, например) рулить конфликтами типа jQuery уже крайне сложно. Мне кажется эту проблему лучше решать отдельно. bower решает свою, узкоспециализированную, задачу.
 

Redjik

Джедай-мастер
Что не привествуешь? Пакетный менеджер? Гораздо проще управлять пакетами JS - Бутстрап, и Wow и Font Awesome, и еще масса свистелок и перделок. Я в Linux сижу и мне так удобнее)) просто делаю комманду bower install animate и тот сам все что надо качает, и устанавливает, с зависимостями. Надо обновить - делаю bower update font-awesome.
bower, grunt пофиг - сами менеджеры пакетов приветствую, как stand-alone решения, не приветствую сброку и добавление зависимостей из пыха
 

Активист

Активист
Команда форума
Так рулить неправильно.

Подключишь один, второй. Оба хотят jQuery. Надо решать такие конфликты. Потом захочешь все-таки нормально оптимизировать статику и это превратится в сущий гемор, ибо при оптимизации(собирание всех файлов с зависимостями в один, например) рулить конфликтами типа jQuery уже крайне сложно. Мне кажется эту проблему лучше решать отдельно. bower решает свою, узкоспециализированную, задачу.
Конфликты? Например?
 

Adelf

Administrator
Команда форума
$layout->addBowerPkg("jqueryui");
...
$layout->addBowerPkg("jquery.another.awesome.plugin");

Оба хотят jquery.js. Пока подключается пофайлово.. можно и разрулить. а вот когда он все эти бандлы начнет собирать в один файл для оптимизации то jquery будет подключен в оба. И как рулить такое я не знаю.

Upd: тут я понял, что варианты есть.. но зачем усложнять? Не проще самому правильно сконфигурировать подключаемую статику?
 

Активист

Активист
Команда форума
$layout->addBowerPkg("jqueryui");
...
$layout->addBowerPkg("jquery.another.awesome.plugin");

Оба хотят jquery.js. Пока подключается пофайлово.. можно и разрулить. а вот когда он все эти бандлы начнет собирать в один файл для оптимизации то jquery будет подключен в оба. И как рулить такое я не знаю.

Upd: тут я понял, что варианты есть.. но зачем усложнять? Не проще самому правильно сконфигурировать подключаемую статику?
jquery один, зачем его дважды подключать? проблему зависимостей решает сам bower
 

Adelf

Administrator
Команда форума
флоппик, ок. Рад за тебя :) . Обьясню проблему как понимаю ее я. Расскажешь в чем я неправ.

Код:
$layout->addBowerPkg("jquery.plugin1");
...
$layout->addBowerPkg("jquery.plugin2");
Грубо говоря генерирует:
Код:
<script src="jquery.js"...
<script src="jquery.plugin1.js"...
....
<!-- тут он понимает что jquery он уже подключал. Поэтому не будет делать это еще раз. -->
<script src="jquery.plugin2.js"...
Это самый простой вариант. Но так не делают. Все давно уже собирают в бандлы..

Ну как реальный вариант.. эта штука, проанализировав список файлов, выдаст чтонибудь типа:
Код:
<script src="/bundle.php?files=jquery.js,jquery.plugin1.js,jquery.plugin2.js"...
Ну ладна. наверно идея имеет право на жизнь. Нужно только анализировать грамотно. Если не возникнет проблем типа:
Код:
"jquery" : ">= 1.7.x"
....
"jquery" : "< 1.6.x"
:)
 

Активист

Активист
Команда форума
Это самый простой вариант. Но так не делают. Все давно уже собирают в бандлы..
...
Код:
<script src="/bundle.php?files=jquery.js,jquery.plugin1.js,jquery.plugin2.js"...
...
Ну ладна. наверно идея имеет право на жизнь. Нужно только анализировать грамотно. Если не возникнет проблем типа:
Код:
"jquery" : ">= 1.7.x"
....
"jquery" : "< 1.6.x"
:)
По поводу версий jquery - это еще на этапе установки пакета пакетным менеджером вылезет, типа конфликт версий. Что касается "bundle.php" - это не проблема. Я перекладываю эту заботу на модуль apache (nginx) pagespeed ( https://developers.google.com/speed/pagespeed/module ) . Помимо минимизации трафика путем объединения множества файлов (js и css) и их упавковки, он еще засовывает мелкие изображения в сам HTML ( <input src="base64:blabla"> ), увеличивая загрузку за счет снижения DNS и общего количества запросов.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
есть, во фреймворках, но ты ими не пользуешься
 
Сверху