Est-il acceptable de modifier le fichier composer.json de Drupal?

8

Drupal adhère à la meilleure pratique de ne jamais modifier le cœur .

Drupal 8 a un fichier composer.json intégré dans le noyau, si vous devez ajouter une bibliothèque tierce, devriez-vous modifier composer.json, ou existe-t-il une meilleure façon de le faire?

David Barratt
la source
Pouvons-nous rouvrir cette discussion étant donné que cela fait deux ans qu'elle n'a pas été discutée pour la dernière fois? J'ai lu que dans Drupal 8 RC1, on peut maintenant gérer les modules directement via composer requiredans le docroot Drupal. C'est bien beau, mais que se passe-t-il si je dois faire ce composer require drupal/drupal-extensionqui extrait Behat et modifie ensuite beaucoup de choses dans le répertoire des fournisseurs du noyau D8? C'est particulièrement une question délicate au Panthéon où apparemment la racine du repo doit être la docroot Drupal.
kostajh

Réponses:

5

Il est possible de consommer Drupal 8 dans votre propre composer.jsonfichier:

{
    "name": "davidbarratt/mydrupalproject",
    "require": {
        "drupal/drupal": "8.*"
        "composer/installers": "1.*"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "drupal/drupal",
                "type": "drupal-core",
                "version": "8.0.0-dev",
                "source": {
                    "url": "http://git.drupal.org/project/drupal.git",
                    "type": "git",
                    "reference": "8.x"
                }
            }
        }
    ],
    "minimum-stability": "dev"
}

Il y a une demande d'extraction pour composer/installerspermettre l'installation des drupal-coretypes de projets: http://github.com/composer/installers/pull/38

J'adorerais votre entrée sur la demande de tirage ci-dessus, ainsi que celle-ci dans la file d'attente qui permet l'installation de modules / thèmes / profils.

Une autre solution qui fonctionne actuellement est le module Composer Manager , qui facilite l' composer.jsonutilisation des modules. Il est actuellement disponible pour Drupal 7 et sera disponible pour Drupal 8 une fois les versions alpha de Drupal 8 proches.

Merci beaucoup, Rob

RobLoach
la source
Souhaitez-vous mettre à jour votre réponse. :) drupal.org/node/2404989
David Barratt
1

Il existe également le module Composer qui est un wrapper Drush pour Composer. Votre module peut alors fournir son propre fichier compositeur que Drush utilisera pour télécharger des dépendances supplémentaires pour votre module - ou site si vous utilisez par exemple au moins 1 module "personnalisé" pour votre site drupal.

Je recommande également de regarder ce séminaire Drupal8 / Composer de DrupalCon Munich 2012: http://munich2012.drupal.org/content/drupal-has-dependencies-lets-manage-them

tenken
la source
Drush Composer est juste un wrapper autour de Composer. Si vous l'utilisez pour modifier les exigences basées sur Composer de Drupal, il modifiera le composer.jsonfichier racine de Drupal . De plus, la vidéo de Munich 2012 n'est plus disponible.
paul-m
0

Oui.

Il est acceptable d'utiliser Composer comme il est censé être utilisé. :-)

Éditer:

Ce package existe pour vous aider à gérer votre projet Drupal basé sur Composer: https://github.com/drupal-composer/drupal-project

paul-m
la source
Avez-vous une citation?
David Barratt
J'ai ceci: composer create-project drupal/drupal drupal_root ~8@dev --keep-vcs cd drupal_root composer require vendor/package ~1... décidez que vous n'avez pas besoin de ce paquet ... git checkout -- composer.json composer updateEt j'aimerais le garder.
paul-m
Cela modifie toujours le fichier root composer.json. Vous devrez toujours fusionner vos modifications avec les modifications de Drupal. Ou pire, si quelqu'un ne met pas à jour son fichier de compositeur comme indiqué, vous pouvez rencontrer des erreurs majeures ou des failles de sécurité critiques. Comment contournez-vous cela?
David Barratt
Non. Vous devez faire ces choses. Il n'y a pas de compositeur automatique pour Drupal 8 pour le moment, au-delà de tout script que vous pourriez faire pour le faire.
paul-m
Si vous devez fusionner des modifications avec Drupal, n'est-ce pas exactement pourquoi vous ne modifiez pas le core?
David Barratt