it-swarm.com.de

Verwalten von Modulbibliotheksabhängigkeiten mit composer

Ich habe Abhängigkeiten in einem benutzerdefinierten Modul mit drupal-composer gefunden , Wie kann ich eine Bibliothek eines Drittanbieters in mein benutzerdefiniertes Modul aufnehmen, ohne Composer = Manager und Verwalten von Contrib-Modulen composer Abhängigkeiten von drupal 8 , die an meine weitergeleitet werden Frage, scheint aber nicht mehr zuzutreffen, da Drupal 8.1 und die Ablehnung von Composer Manager .

Auch beliebte Anleitungen wie Die endgültige Einführung in D8 und Composer scheinen nicht mehr zu gelten, da sie auch composer Manager) erwähnen.

Die andere Lösung im Gegensatz zu composer Manager, ändern Sie die Core-Datei composer.json fühlt sich wie zu viel Core-Hacking an und würde wahrscheinlich mit jedem Drush-Update von Drupal Core) brechen (?).

Insbesondere versuche ich, Views vCards von Drupal 7 bis 8) zu aktualisieren. Ich habe meine Datei composer.json wie folgt erstellt:

{
  "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.*"
  }
}

Aber wenn ich eine composer.json-Datei in meinen Modulordner lege, wie mache ich Drupal darauf aufmerksam, dass diese Datei vorhanden ist, und wie stelle ich sicher, dass die erforderliche zipstream-php - Bibliothek vorhanden ist wird heruntergeladen?

Durch einfaches Ausführen von composer update Aus dem Stamm Drupal root werden viele Abhängigkeiten aktualisiert Drupal Abhängigkeiten), jedoch nicht die Dateien composer.json Ich gehe auch nicht davon aus, dass ich composer install aus allen Modulen mit Abhängigkeiten heraus aufrufen sollte.

Wie mache ich Drupal auf die Abhängigkeit eines Moduls aufmerksam, ohne composer Manager und/oder Hacking Core) zu verwenden?

AKTUALISIEREN:

Das Composer Merge Plugin, das vom Core verwendet wird scheint einen Platzhalterpfad zu unterstützen:

{
    "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
        }
    }
}

Warum verschmilzt der Kern nicht modules/*/composer.json, Das würde alles richtig lösen?

Update 2:

Die Begründung, dies nicht zu unterstützen, wird in dieses Problem behandelt (was auch seit einiger Zeit ruhig ist).

9
Neograph734

Neue Methode mit Drupal-Gerüst für größte Flexibilität

Für Drupal 8.4.0 und höher mit drush> 9.0.0 ist drush make veraltet und Sie sollten einen Workflow mit vollständigem Komponisten verwenden wie in den unten stehenden Links zur Dokumentation von drupal.org beschrieben. Diese Links empfehlen die Verwendung eines composer - Projekts, dies funktioniert jedoch möglicherweise nicht für alle Webserver-Setups. Im Folgenden wird Schritt für Schritt beschrieben, wie Sie composer.json manuell für eine detaillierte Erklärung einrichten. Die Anweisungen zum manuellen Hinzufügen von Modulen können weiterhin ausgeführt werden.

# Initialize composer. Stability alpha is important for custom modules that may be source managed outside of packagist or drupal.org
composer init --name myvendor/mysite --stability=alpha --license=GPLv2
composer config repositories.drupal composer https://packages.drupal.org/8
composer config discard-changes true

Dann müssen Sie zu composer.json manuell Folgendes hinzufügen, basierend auf Ihren Einstellungen, da dies mit composer nicht automatisch möglich ist. Diese konfigurieren drupal-scaffold so, dass Ihre Module installiert werden wo Sie sie wollen (im Gegensatz zu einem Hersteller/oder einem Verzeichnis, das von einem anderen Entwickler ausgewählt wurde). Ändern Sie "Webroot" in "www" oder "public" oder was Ihr Host ist.

    "extra": {
        "installer-paths": {
            "webroot/core": ["type:drupal-core"],
            "webroot/modules/contrib/{$name}": ["type:drupal-module"],
            "webroot/modules/custom/{$name}": ["type:drupal-custom-module"],
            "webroot/themes/contrib/{$name}": ["type:drupal-theme"],
            "webroot/themes/custom/{$name}": ["type:drupal-custom-theme"],
            "webroot/profiles/{$name}": ["type:drupal-profile"],
            "webroot/libraries/{$name}": ["type:drupal-library"]
        },
        "patches": {}
    },
    "scripts": {
        "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold"
    }

Jetzt können Sie einige Abhängigkeiten installieren. Beachten Sie, dass composer Skripte und Plugins verwenden muss, damit dies funktioniert.

composer require composer/installers:^1.4.0 drupal-composer/drupal-scaffold:^2.3.0 cweagans/composer-patches:^1.6.2

Führen Sie das Drupal-Scaffold-Skript einmal aus (oder nach Bedarf auf Ihrem Build-Server):

composer drupal-scaffold

Drupal-Kern, Module, Themes usw. können gemäß den folgenden Anweisungen ohne das Drupal-Merge-Plugin installiert werden.

composer require drupal/core:~8.5.1 drupal/views_vcards

Ältere Methode mit Drupal-Merge-Plugin oder direkt mit Core arbeiten

Für Drupal 8.1.0 und höher können Sie composer verwenden, um Drupal - Module direkt zu benötigen. Die Dokumentation zu Verwenden von Composer in einem Drupal - Projekt und Verwenden von Composer zum Installieren von Drupal Pakete über Drupal.org wurden aktualisiert, um den Paketagisten von drupal.org zu nutzen. Ich finde, dass es bereits in einem Bereitstellungsszenario gut funktioniert.

composer config repositories.drupal composer https://packages.drupal.org/8
composer require drupal/views_vcards

Für die Entwicklung denke ich, dass das manuelle Hinzufügen der Abhängigkeit mit composer require Gut funktioniert. Der Merge-Ansatz funktioniert auch mit dem Drupal-Merge-Plugin und ich verwende ihn für meinen Drush-Make-Workflow.

composer config repositories.drupal composer https://packages.drupal.org/8
composer require mile23/drupal-merge-plugin
composer update

Update 2016.06.22

Ich bin auf ein Problem mit drush make gestoßen, bei dem die traditionellen Drupal - Versions-Tags und die packupistischen URLs von drupal.org mit semver hinzugefügt wurden. Zu diesem Zweck musste ich auf die Verwendung des stabileren Packagisten unter https://packagist.drupal-composer.org umsteigen, der weiterhin die traditionellen Drupal - Versions-Tags unterstützt .

Beachten Sie außerdem, dass der Build-Server oder die Build-Maschine übermäßig viel Speicher benötigt, um ein composer - Update durchzuführen (oder erforderlich), das in allen Szenarien erforderlich ist, in denen composer Update auf einem ähnlichen Entwicklungscomputer ist in Ihrem Build-Prozess nicht möglich.

Update 2016.09.23

Update 2018.03.30

  • Ich habe eine positive Abstimmung bemerkt. Dies ist ziemlich alt, daher haben wir uns entschlossen, über neuere Entwicklungen zu klären und Ihre Site direkt mit composer einzurichten, da drush make (leider) für eine Weile veraltet ist.
6
mradcliffe