Composer и библиотеки

Аватар пользователя WillWe WillWe 1 апреля 2021 в 11:36

Изучаю drupal 9, и уже давно где-то видел, какой удобный инструмент - компосер - мол нужно поставить модуль - только напиши, он всё сам установит куда нужно и даже библиотеки все сам подтянет.
Но то ли я в чем-то не разобрался, то ли что, но он и не собирается их скачивать.
Или всё-таки до сих пор это нереализовано?
вот есть модуль chosen (например), ему нужна библиотека, а что писать в командной строке то?
composer require drupal/chosen устанавливает сам модуль, библиотеку не хочет.
Соответственно в друпале потом пишут You need to download the Chosen JavaScript file and extract the entire contents of the archive into the libraries/chosen directory in your Drupal installation directory.
Но там даже нет этой директории libraries нигде.
Или нужно так же как и для 7 друпала установить сначала libraries API?

Похоже, я что-то многого ожидал от этой 9й версии и от компосера тоже Sad
Почему-то в 7 друпале было хоть и муторнее всё это скачивать/устанавливать, зато понятнее.
Тут просто какие-то грабли, а то ли день такой седня неудачный.

Комментарии

Аватар пользователя ivnish ivnish 1 апреля 2021 в 11:45
1

Но там даже нет этой директории libraries нигде.

Если её нет, её нужно создать)

Или нужно так же как и для 7 друпала установить сначала libraries API?

Не нужно

Почему-то в 7 друпале было хоть и муторнее всё это скачивать/устанавливать, зато понятнее.

Принцип работы с библиотеками не изменился. Их по-прежнему нужно скачивать, если они требуются какому-то модулю. Но! Часто разрабы прописывают либу как зависимость к модулю и она скачивается композером вместе с модулем. Иногда делают драш команду для скачивания (я так делаю в своих модулях)

Аватар пользователя WillWe WillWe 1 апреля 2021 в 11:57

Ага, диру создал (оказывается она должна была быть в /web/) - запихал туда библиотеку, chosen заработал. УРА. Одной проблемой меньше, теперь по крайней мере понятно, куда пихать другие библиотеки, когда они понадобятся.
Но правильно ли я понял, что есть такие модули, при установке которых компосером, эти библиотеки сами скачаются в /web/libraries/lib-name ?
Ну то есть в этом случае всё получается автоматом, ну а если уж нет, то просто вручную по старинке эту библиотеку пихаем?
А то чот я с bower-asset не могу понять, в мою тупую башку не лезет - что это, как и куда Smile

Аватар пользователя artomas artomas 1 апреля 2021 в 11:53

Да, многие прописывают все и это все само ставится.
Можно, помимо bower, просто добавлять библиотеки в composer.json. Вот, например, установка slick:

{
        "type": "package",
        "package": {
                "name": "blazy/blazy",
                "version": "v1.8.2",
                "type": "drupal-library",
                "dist": {
                        "url": "https://github.com/dinbror/blazy/archive/master.zip",
                        "type": "zip"
                }
        }
},
{
        "type": "package",
        "package": {
                "name": "slick/slick",
                "version": "v1.8.1",
                "type": "drupal-library",
                "dist": {
                        "url": "https://github.com/kenwheeler/slick/archive/master.zip",
                        "type": "zip"
                }
        }
}

И потом пакетом все поставить.

composer require blazy/blazy \
slick/slick \
drupal/blazy \
drupal/slick

Есть варианты, например, с webform, когда нужно плагин объединения поставить, чтобы уже Композер сам потом шел глубже и ставил эти библиотеки. Пруф: https://www.drupal.org/node/3003140.

Аватар пользователя artomas artomas 1 апреля 2021 в 12:00

Это новичок, как он сам написал. А мой текст -- пояснения, чтобы разобрался. Но, кстати, в проекте небольшом вполне рабочий вариант и с composer.json.

Аватар пользователя vlucas vlucas 1 апреля 2021 в 12:01

новичкам то зачем советовать нетехнологичные вещи, зачем ему наши ошибки? Пусть сразу гуглит и разбирается с bower-asset

Аватар пользователя artomas artomas 1 апреля 2021 в 12:03

Тоже верно. Но смысл все-таки был в понимании зависимостей, которые все равно все сводятся к composer.json.

Аватар пользователя WillWe WillWe 1 апреля 2021 в 12:03

Да-да-да, я когда гуглил, мне тоже попадался такой странный (на мой взгляд) способ установки библиотек - типа пропишите в copmoser.json
Я как это прочитал - несколько прифигел - то есть я должен зайти на фтп, или там через bash отредактировать этот файл этой вот вырвиглазной конструкцией, в которой как нефиг какую-то ошибку допустить, при этом нужно туда путь к самой библиотеке вставить - а не проще тогда её просто по фтп в libraries залить и всё? Smile
Я то просто думал, что этот composer.json ну как то сам должен создаваться что ли... типа пишешь composer require drupal/chosen - и всё. ну или composer require <библиотека - путь к ней> - ну как то так...
Ну или я совсем дурак )

Аватар пользователя WillWe WillWe 1 апреля 2021 в 12:09

Так это прописывание на порядок сложнее, чем заливка (учитывая, что прописывать нужно для каждой новой библиотеки по-новому), разве нет?
Ну то есть что проще - архив с либой распаковать в /web/libraries
или json отредактировать? Или я что-то недопонимаю?

Аватар пользователя ivnish ivnish 1 апреля 2021 в 12:22

Да. Большинство друпаловских либ типа colorbox и тд не обновлялись уже много лет и вряд ли будут обновляться. Не вижу смысла заморачиваться с ними в композере

Аватар пользователя vlucas vlucas 1 апреля 2021 в 12:25

Большинство - это не все, плюс не вижу заморочки в выполнении 1 команды.

В таком случае лучше уж npm и gulp переносить то что нужно в libraries

Аватар пользователя vlucas vlucas 1 апреля 2021 в 12:18

и не надо ничего редактировать, надо просто выполнить команду:
composer require bower-asset/chosen

Аватар пользователя WillWe WillWe 1 апреля 2021 в 12:28

И он должен будет скачать нужную библиотеку в /web/libraries/chosen?
А до этого чтобы этот bower-asset работал, что нужно сделать?

Аватар пользователя WillWe WillWe 1 апреля 2021 в 16:00

Отвечу так сказать сам себе:
Благодаря отлично написанному мануалу для этого модуля https://www.drupal.org/project/select2
Стало понятно, что, куда и зачем пихать, чтобы композер (и bower-asset заодно вместе с ним) заработали как надо.

Аватар пользователя gun_dose gun_dose 2 апреля 2021 в 0:01

Сейчас почти у всех распространённых модулей, которым нужны библиотеки, есть инструкция, как устанавливать библиотеку композером.

Аватар пользователя artomas artomas 1 апреля 2021 в 12:11

Вы все равно теряете в поддержке версий. Тут bower конечно. Но сам принцип, на мой взгляд, в трех таких вариантах + тот самый bower.