Изучаю 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й версии и от компосера тоже
Почему-то в 7 друпале было хоть и муторнее всё это скачивать/устанавливать, зато понятнее.
Тут просто какие-то грабли, а то ли день такой седня неудачный.
Комментарии
для таких библиотек используй bower-asset
Если её нет, её нужно создать)
Не нужно
Принцип работы с библиотеками не изменился. Их по-прежнему нужно скачивать, если они требуются какому-то модулю. Но! Часто разрабы прописывают либу как зависимость к модулю и она скачивается композером вместе с модулем. Иногда делают драш команду для скачивания (я так делаю в своих модулях)
Ага, диру создал (оказывается она должна была быть в /web/) - запихал туда библиотеку, chosen заработал. УРА. Одной проблемой меньше, теперь по крайней мере понятно, куда пихать другие библиотеки, когда они понадобятся.
Но правильно ли я понял, что есть такие модули, при установке которых компосером, эти библиотеки сами скачаются в /web/libraries/lib-name ?
Ну то есть в этом случае всё получается автоматом, ну а если уж нет, то просто вручную по старинке эту библиотеку пихаем?
А то чот я с bower-asset не могу понять, в мою тупую башку не лезет - что это, как и куда
Да, я об этом писал чуть выше
Да, многие прописывают все и это все само ставится.
Можно, помимо 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.
только не нужное загромождение, плюс плохая версионность
Это новичок, как он сам написал. А мой текст -- пояснения, чтобы разобрался. Но, кстати, в проекте небольшом вполне рабочий вариант и с composer.json.
новичкам то зачем советовать нетехнологичные вещи, зачем ему наши ошибки? Пусть сразу гуглит и разбирается с bower-asset
Тоже верно. Но смысл все-таки был в понимании зависимостей, которые все равно все сводятся к composer.json.
Да-да-да, я когда гуглил, мне тоже попадался такой странный (на мой взгляд) способ установки библиотек - типа пропишите в copmoser.json
Я как это прочитал - несколько прифигел - то есть я должен зайти на фтп, или там через bash отредактировать этот файл этой вот вырвиглазной конструкцией, в которой как нефиг какую-то ошибку допустить, при этом нужно туда путь к самой библиотеке вставить - а не проще тогда её просто по фтп в libraries залить и всё?
Я то просто думал, что этот composer.json ну как то сам должен создаваться что ли... типа пишешь composer require drupal/chosen - и всё. ну или composer require <библиотека - путь к ней> - ну как то так...
Ну или я совсем дурак )
А можно не заливать. Просто прописать все, что нужно. Выбирайте.
Так это прописывание на порядок сложнее, чем заливка (учитывая, что прописывать нужно для каждой новой библиотеки по-новому), разве нет?
Ну то есть что проще - архив с либой распаковать в /web/libraries
или json отредактировать? Или я что-то недопонимаю?
а потом вот это всё это в git?
Лучше почитайте зачем нужен composer
Я так делаю)
грузишь либы руками и под версионный контроль?
Да. Большинство друпаловских либ типа colorbox и тд не обновлялись уже много лет и вряд ли будут обновляться. Не вижу смысла заморачиваться с ними в композере
Не, ну так тоже нельзя вопрос рассматривать)))
Большинство - это не все, плюс не вижу заморочки в выполнении 1 команды.
В таком случае лучше уж npm и gulp переносить то что нужно в libraries
и не надо ничего редактировать, надо просто выполнить команду:
composer require bower-asset/chosen
И он должен будет скачать нужную библиотеку в /web/libraries/chosen?
А до этого чтобы этот bower-asset работал, что нужно сделать?
погуглить хотя бы что это
Отвечу так сказать сам себе:
Благодаря отлично написанному мануалу для этого модуля https://www.drupal.org/project/select2
Стало понятно, что, куда и зачем пихать, чтобы композер (и bower-asset заодно вместе с ним) заработали как надо.
Сейчас почти у всех распространённых модулей, которым нужны библиотеки, есть инструкция, как устанавливать библиотеку композером.
Ответ со страницы описания модуля: https://www.drupal.org/project/chosen/issues/3102250#comment-14006749
Вы все равно теряете в поддержке версий. Тут bower конечно. Но сам принцип, на мой взгляд, в трех таких вариантах + тот самый bower.