J'ai trouvé des dépendances dans un module personnalisé avec drupal-composer , comment puis-je inclure une bibliothèque tierce dans mon module personnalisé sans utiliser Composer Manager et comment gérer les dépendances du compositeur des modules contrib sur drupal 8 qui sont reliées à ma question, mais non semblent plus s'appliquer depuis Drupal 8.1 et la dépréciation du gestionnaire Composer .
Les guides populaires tels que l' introduction définitive de D8 et Composer semblent ne plus s'appliquer car ils mentionnent également le gestionnaire de compositeurs.
L'autre solution opposée au gestionnaire de compositeur, modifier le fichier core composer.json ressemble à trop de piratage de noyau et romprait probablement avec chaque mise à jour Drush du noyau Drupal (?).
Plus précisément, j'essaie de mettre à jour les vCards Views de Drupal 7 à 8. J'ai créé mon fichier composer.json comme suit:
{
"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.*"
}
}
Mais si je mets un fichier composer.json dans mon dossier de module, comment puis-je informer Drupal que ce fichier est là et comment m'assurer que la zipstream-php
bibliothèque requise est téléchargée?
La simple exécution à composer update
partir de la racine Drupal met à jour de nombreuses dépendances Drupal, mais elle n'inclut pas les fichiers composer.json qui se trouvent dans les dossiers des modules. Je ne suppose pas non plus que je devrais appeler composer install
de l'intérieur de tous les modules avec des dépendances.
Comment informer Drupal de la dépendance d'un module sans utiliser le gestionnaire de compositeur et / ou le hacking core?
MISE À JOUR:
Le plugin de fusion de composeur utilisé par core semble prendre en charge un chemin générique:
{
"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
}
}
}
Pourquoi le noyau ne fusionne-t-il pas modules/*/composer.json
, cela résoudrait tout correctement?
Mise à jour 2:
Le raisonnement pour ne pas soutenir cela est couvert dans ce numéro (qui est également silencieux depuis un certain temps maintenant).
la source
composer.json
fichier est donc la nouvelle méthode recommandée et le drush pour le téléchargement et l'installation des modules est remplacé? Évidemment, le composeur résoudra automatiquement les dépendances imbriquées et téléchargera également mes dépendances.Réponses:
Nouvelle méthode utilisant un échafaudage Drupal pour une plus grande flexibilité
Pour Drupal 8.4.0 et versions ultérieures utilisant drush> 9.0.0 , drush make est obsolète et vous devez utiliser un flux de travail complet comme décrit dans les liens de documentation de drupal.org ci-dessous. Ces liens recommandent d'utiliser un projet Composer, mais cela peut ne pas fonctionner pour la configuration du serveur Web de tout le monde. Ce qui suit est étape par étape comment configurer manuellement composer.json pour une explication détaillée. Les instructions concernant l'ajout manuel de modules peuvent toujours être effectuées.
Ensuite, vous devez ajouter manuellement à composer.json les éléments suivants en fonction de vos préférences, car il n'y a aucun moyen de le faire automatiquement avec composer tel quel. Ceux-ci configureront drupal-scaffold pour installer vos modules où vous le souhaitez (par opposition à dans le fournisseur / ou dans un répertoire choisi par un autre développeur). Changez «webroot» en «www» ou «public» ou quel est votre hôte.
Vous pouvez maintenant installer certaines dépendances. Notez que composer doit être capable d'utiliser des scripts et des plugins pour que cela fonctionne.
Exécutez le script drupal-scaffold une fois (ou sur votre serveur de build si nécessaire):
Le noyau Drupal, les modules, les thèmes, etc ... peuvent être installés selon les instructions ci-dessous sans le plugin drupal-merge-plugin.
Ancienne méthode utilisant drupal-merge-plugin ou travaillant directement avec le noyau
Pour Drupal 8.1.0 et supérieur, vous pouvez utiliser Composer pour exiger directement des modules Drupal. La documentation relative à l' utilisation de Composer dans un projet Drupal et à l' utilisation de Composer pour installer les packages Drupal via Drupal.org a été mise à jour pour tirer parti du packagist de drupal.org. Je trouve que cela fonctionne déjà bien dans un scénario de déploiement.
Pour le développement, je pense que l'ajout manuel de la dépendance avec
composer require
fonctionne bien. L'approche de fusion fonctionne aussi avec le plugin drupal-merge-plugin et je l'utilise pour mon flux de travail drush make.Mise à jour 2016.06.22
J'ai rencontré un problème avec drush make, qui a ajouté les balises de version Drupal traditionnelles et les URL de packagist drupal.org à l'aide de semver. À cette fin, j'ai dû passer à l'utilisation du packagist stabler sur https://packagist.drupal-composer.org , qui prend toujours en charge les balises de version Drupal traditionnelles.
Notez également que le serveur ou la machine de génération nécessite une quantité de mémoire exorbitante pour effectuer une mise à jour du compositeur (ou l'exige), ce qui est nécessaire dans tous les scénarios où l'exécution de la mise à jour du compositeur sur une machine de développement similaire n'est pas possible dans votre processus de génération.
Mise à jour 2016.09.23
Mise à jour 2018.03.30
la source