<rmcreative>

RSS

Yii, fxp и Asset packagist

12 августа 2016

Когда Composer ещё не стал стабильным, API его довольно часто менялось. Из за этого отваливались плагины. Одним из самых ярких примеров был постоянно ломавшийся fxp/composer-asset-plugin, используемый в Yii 2.0 и попивший немало крови. С релизом Composer проблема практически ушла, но к Yii 2.1, из за скорости установки и самой необходимости ставить плагин, было решено исследовать альтернативы. fxp, как и прежде, работает не быстро.

Сначала мы начали смотреть в сторону нативной установки при помощи npm и bower, но этот вариант, хоть и очень привлекательный, имеет значительный минус в контексте расширений — не получается удобно связать конкретные версии PHP-пакетов и JavaScript-пакетов.

Андрей Васильев (@hiqsol) примерно в это же время занимался тем же. Исследовав множество вариантов, он пришёл к созданию asset-packagist. По сути это прокси-репозиторий пакетов. Во вне пакеты видны как Composer-ские. Внутри всё тот же fxp обрабатывает пакеты, имена, которых начинаются на bower-asset или npm-asset. Работает всё очень быстро. Глобальных плагинов не требует.

Ещё до публичной версии Yii 2.0 мы с Qiang-ом рассматривали такой вариант, но почему-то (уже не помню почему), его отклонили, взяв в работу fxp.

Возможно, в версии 2.1 Yii будет использовать asset-packagist.

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

  1. №10618
    Станислав
    Станислав 12 авг. 2016 г., 13:49:24

    Попробовал у себя на проекте - действительное быстро, оставил!

  2. №10620
    Александр
    Александр 12 авг. 2016 г., 22:04:00

    Мне кажется, или asset-packagist не подтягивает зависимости?

    Например для composer require "bower-asset/jquery-ui:^1.12" fxp загрузит и jquery-ui 1.12.0.1, и jquery 3.1.0, а asset-packagist загрузит только jquery-ui 1.12.0.0.

  3. №10621
    Sam
    Sam 12 авг. 2016 г., 23:29:44

    Александр, на чистом проекте воспроизводится? Если да, стоит закинуть issue в github.com/hiqdev/asset-packagist/issues

  4. №10622
    BS
    BS 13 авг. 2016 г., 12:07:01

    Возможно стоит провести голосование сообщества npm/bower или расширение для composer

  5. №10623
    Sam
    Sam 13 авг. 2016 г., 12:22:09

    BS, уже проводили в немного меньшем масштабе. Вышло 50/50 то есть в любом случае найдутся те, кто хочет grunt/gulp + bower и те, кто не хочет на своём сервере ноду.

  6. №10624
    Александр
    Александр 13 авг. 2016 г., 12:53:59

    Sam, воспроизводится и на чистом пустом, и на рабочем проекте с различными пакетами. Issue создал.

  7. №10625
    Василий
    Василий 13 авг. 2016 г., 14:14:42

    Что-то я так и не понял предложение: "Сначала мы начали смотреть в сторону нативной установки при помощи npm и bower, но этот вариант, хоть и очень привлекательный, имеет значительный минус в контексте расширений — не получается удобно связать конкретные версии PHP-пакетов и JavaScript-пакетов.", у меня не было каких либо проблем, и этой яне понимаю. В чем соль?

  8. №10626
    Sam
    Sam 14 авг. 2016 г., 13:16:08

    Василий, например, мы делаем расширение-обёртку для HTML-разметки под CSS-фреймворк. Версия в bower 1.0, версия в composer 1.0. Далее у нас выходит версия 2.0 bower-пакета, которая не совместима с версией 1.0. В то же время bower-пакет используется в других расширениях. Composer ситуацию отработает верно потому как и bower-пакеты и composer-пакеты резолвятся его SAT-солвером.

  9. №10627
    LAV45
    LAV45 15 авг. 2016 г., 4:27:35

    Использую уже на 3 проеках, полет нормальный.

  10. №10631
    Василий
    Василий 15 авг. 2016 г., 19:07:54

    Sam, я считаю, это проблема того самого расширения-обертки. А это очередной костыль. ИМХО.

  11. №10633
    Sam
    Sam 15 авг. 2016 г., 21:42:21

    Василий, что именно проблема расширения обёртки и что именно костыль?

  12. №10635
    Василий
    Василий 15 авг. 2016 г., 22:06:50

    Sam,

    мы делаем расширение-обёртку для HTML-разметки под CSS-фреймворк

    • расширение-обертка

    Asset packagist

    костыль

  13. №10637
    Sam
    Sam 15 авг. 2016 г., 23:57:41

    Василий, сейчас такое расширение ставится полностью прозрачно. То есть composer install и всё. Оно всё, что ему надо, вытянет само в нужных версиях. В случае, если пакет используется несколькими расширениями (тот же jQuery), версии корректно разрулятся. Если переключиться на нативный bower/npm, так получится?

    asset-packagist — по сути да, костыль, чтобы без ноды через composer получить доступ к npm/bower пакетам. Часть сообщества категорически отказывается ставить ноду на свои сервера.

  14. №10638
    Василий
    Василий 16 авг. 2016 г., 6:56:53

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

  15. №10639
    Sam
    Sam 16 авг. 2016 г., 10:17:40

    Василий, решать как? Если версии в двух разных менеджерах пакетов, решать можно только руками, что очень неудобно.

  16. №10640
    Василий
    Василий 16 авг. 2016 г., 12:34:59

    Sam, да, руками. =) Костыли более как-то не очень. =)

  17. №10642
    Sam
    Sam 16 авг. 2016 г., 13:41:34

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

  18. №10646
    Василий
    Василий 17 авг. 2016 г., 11:10:42

    Sam, почему всего? Разработка ведь выполняется постепенно, а не пачкой. Конфликт появился - разрешили, и т.п. Если какое обновление, то как правило, редко они проходят гладко. И опять же, на моем опыте не было такого, чтобы я изучал код всего. Поэтому, ИМХО, я уже все сказал выше. =)

  19. №10647
    Sam
    Sam 17 авг. 2016 г., 12:08:34

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

  20. №10648
    Василий
    Василий 17 авг. 2016 г., 15:37:13

    Sam, пол рабочего дня для обновления - это нормально, и даже не много.

  21. №10649
    Sam
    Sam 17 авг. 2016 г., 19:16:26

    У всех разные темпы работы, конечно, но, как по мне, это многовато.

  22. №10659
    maxyc
    maxyc 08 сент. 2016 г., 12:02:28

    Я за то как в ларе, никаких требований использовать ассеты. за все сам отвечаешь, хочешь бовер, хочешь пакажист или фхр.

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

  23. №10660
    LAV45
    LAV45 09 сент. 2016 г., 11:41:22

    Всплыла одна не очень приятная проблема. При установке всех зависимостей:

    ~$ composer install --prefer-dist --no-interaction --optimize-autoloader --no-plugins
    

    Файл vendor/yiisoft/extensions.php не создается и перестают работать некоторые алиасы, например @vova07, @gii, @debug, ...

    Приходится фиксить github.com/LAV45/yii2-imperavi-widget/commit/7bd5e52bd72800eb22ad6697758d5b641f784fd7

  24. №10661
    Sam
    Sam 09 сент. 2016 г., 23:16:36

    Файл создаётся плагином. В команде выше есть --no-plugins. Естественно, что плагин не задействован и файл не генерится.

  25. №10662
    LAV45
    LAV45 10 сент. 2016 г., 0:23:24

    sum, спссибо

    Снёс "fxp/composer-asset-plugin". Буду переводить все проекты.

  26. №11075
    ivan
    ivan 14 сент. 2017 г., 15:04:57

    да, нода не нужна

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.