web-dev-qa-db-fra.com

Composer est-ce que les modules de clonage git au lieu de les télécharger?

Mon fichier composer se présente comme suit:

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/drupal-extension": "~3.0",
        "drupal/search_api": "1.x-dev",
        "drupal/search_api_view_modes": "1.x-dev",
        "drupal/paragraphs": "^1.0",
        "drupal/features": "3.x-dev",
        "drupal/robotstxt": "^1.0",
        "drupal/search_api_solr": "1.x-dev",
        "drupal/metatag": "1.x-dev",
        "drupal/pathauto": "1.x-dev",
        "drupal/acquia_connector": "^1.4",
        "drupal/sharethis": "2.x-dev",
        "drupal/field_group": "1.x-dev",
        "drupal/ckwordcount": "^1.0",
        "drupal/menu_link_attributes": "1.x-dev",
        "drupal/yaml_editor": "1.x-dev",
        "drupal/devel": "1.x-dev",
        "drupal/menu_block": "^1.4"
    },
    "replace": {
        "drupal/core": "~8.2"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "repositories": {
        "drupal": {
            "type": "composer",
            "url":  "https://packages.drupal.org/8"
        }
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        },
        "installer-paths": {
            "modules/contrib/{$name}": ["type:drupal-module"],
            "themes/contrib/{$name}": ["type:drupal-theme"]
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    }
}

Pour tous les modules qui ont été téléchargés en tant qu'état "dev", ils semblent avoir été clones git. Par conséquent, les modifications ne sont pas reconnues ou enregistrées dans mon arbre git, et ne poussez pas. Ces modules ne sont pas parvenus à mon référentiel distant et n'apparaissent pas sur le site Web distant.

Je ne sais pas comment cela se produit, mais pour l'instant, je devais:

  • cd dans le répertoire du module
  • dossier rm -rf .git
  • git rm - nom de module mis en cache
  • git add module nom
  • git commit -m "Ajout d'un module"
  • git Push

Le ou les modules se retrouvent ensuite dans mon référentiel de projet et se retrouvent sur le serveur distant.

Quel est le flux de travail correct ici? Je n'exécute aucun processus de construction ou outil à distance, mais je souhaite conserver la génération de mon projet avec composer suivi des modules et des thèmes que j'ai installés.

6
Kevin

Oui, c'est ce qu'il fait lorsque vous spécifiez une version de développement.

La méthode recommandée pour gérer un projet composer est de ne pas valider le code managé composer. tout ce que vous validez est le fichier composer.lock et il est garanti qu'une installation de composer avec installer exactement les mêmes versions, à chaque fois.

Voir https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md pour plus d'informations à ce sujet et les moyens de contourner ce problème. si vous voulez vraiment.

Jetez un œil à https://github.com/drupal-composer/drupal-project , il vous donne un environnement de projet qui est préconfiguré en utilisant les paramètres git ignore recommandés et suit la norme moderne en gardant le fournisseur dossier et autres fichiers non publiés hors du dossier Web public.

Mise à jour: L'une des raisons pour lesquelles git le fait, est que drupal.org AFAIK ne vous donne pas la possibilité de télécharger un instantané de développement spécifique, uniquement le dernier. Et l'une des principales fonctionnalités de composer est de créer le fichier de verrouillage et d'obtenir le même commit à chaque fois que vous exécutez composer install, jusqu'à ce que vous exécutiez composer update encore.

6
Berdir