Znalazłem Zależności w module niestandardowym z drupal-kompozytorem , Jak mogę dołączyć bibliotekę innej firmy do mojego modułu niestandardowego bez korzystania z Composer Managera i Jak zarządzać zależnościami modułów kompozytora contrib na Drupal 8, które są związane z moim pytaniem, ale nie Wydaje się, że obowiązują już od czasu Drupal 8.1 i wycofania menedżera Composer .
Również popularne przewodniki, takie jak Ostateczne wprowadzenie do D8 i Composer, wydają się już nie mieć zastosowania, ponieważ wspominają także o menedżerze kompozytorów.
Inne rozwiązanie w przeciwieństwie do menedżera kompozytora, zmiana pliku core composer.json wydaje się być zbyt dużym hackowaniem rdzenia i prawdopodobnie zepsułby się przy każdej aktualizacji Drusha rdzenia Drupala (?).
Mówiąc dokładniej, próbuję zaktualizować widok vCard z Drupal 7 do 8. Utworzyłem plik composer.json w następujący sposób:
{
"name": "drupal/views_vcards",
"description": "Allows creation of vCards using the fields provided by the Views module.",
"type": "drupal-module",
"license": "GPL-2.0+",
"homepage": "https://drupal.org/project/views_vcards",
"require": {
"maennchen/zipstream-php": "0.3.*"
}
}
Ale jeśli umieszczę plik composer.json w folderze modułu, jak sprawić, aby Drupal wiedział, że plik ten istnieje i jak upewnić się, że wymagana zipstream-php
biblioteka została pobrana?
Po prostu uruchomienie composer update
z katalogu głównego Drupal aktualizuje wiele zależności Drupal, ale nie obejmuje plików composer.json, które znajdują się w folderach modułów. Nie zakładam też, że powinienem dzwonić composer install
z wnętrza wszystkich modułów z zależnościami.
Jak uświadomić Drupalowi zależność modułu bez korzystania z menedżera kompozytora i / lub rdzenia hakującego?
AKTUALIZACJA:
Kompozytor seryjnej plugin używany przez rdzeniowych wydaje się wspierać wieloznaczny ścieżkę:
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json",
"extensions/*/composer.json" // < ---- THIS LINE
],
"require": [
"submodule/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}
Dlaczego scalanie rdzenia modules/*/composer.json
nie rozwiązałoby problemu?
Aktualizacja 2:
Powód, dla którego nie popieramy tego, jest omawiany w tym numerze (który również od pewnego czasu jest cichy).
composer.json
pliku jest nowym zalecanym sposobem i zastępowanie pobierania i instalowania modułów jest zastępowane? Oczywiście kompozytor automatycznie rozwiąże zagnieżdżone zależności, a nawet pobierze moje zależności.