web-dev-qa-db-fra.com

Comment utiliser Composer pour installer des bibliothèques tierces

Tout ce que je pensais Composer s'occupe de toute bibliothèque externe dont un module contrib a besoin automatiquement. J'ai essayé d'en installer un, Composer s'est occupé de tous ses modules de dépendance, mais pas tellement avec la bibliothèque externe.

Comment utiliser Composer pour installer des bibliothèques externes dont dépend n'importe quel module?

2
joejam

Il n'est pas recommandé d'installer des bibliothèques JavaScript à l'aide de composer.json, mais c'est possible.

Remarque: Ce type de référentiel a quelques limitations et doit être évité autant que possible:

Composer ne mettra pas à jour le package à moins que vous ne changiez le champ de version.Composer ne mettra pas à jour les références de validation, donc si vous utilisez master comme référence, vous devrez supprimer le package pour forcer une mise à jour et devrez gérer un fichier de verrouillage instable.

( Composer docs )

Si votre package est disponible en téléchargement sur une source externe, par exemple comme archive, vous pouvez l'ajouter en tant que package personnalisé avec le type drupal-library dans la section repositories de votre Drupal composer.json, puis exiger ce package en conséquence:

"repositories": {
  "drupal": {
    "type": "composer",
    "url": "https://packages.drupal.org/8"
  },
  "mypackage": {
    "type": "package",
    "package": {
      "name": "myvendor/mypackage",
      "version": "1.0.0",
      "type": "drupal-library",
      "dist": {
        "url": "https://example.com/mypackage.Zip",
        "type": "Zip"
      }
    }
  }
},
"require": {
  ...
  "composer/installers": "^1.2",
  "myvendor/mypackage": "1.0.0"
},
"extra": {
  "installer-paths": {
    "public/core": ["type:drupal-core"],
    "public/libraries/{$name}": ["type:drupal-library"],
    "public/modules/contrib/{$name}": ["type:drupal-module"],
    "public/profiles/contrib/{$name}": ["type:drupal-profile"],
    "public/themes/contrib/{$name}": ["type:drupal-theme"],
    "drush/contrib/{$name}": ["type:drupal-drush"]
  },
  ...
}

Consultez la Documentation des référentiels pour Composer pour plus de détails ou d'autres types de sources.

3
Mario Steinitz

Définitivement https://asset-packagist.org/

La gêne mineure est la dénomination incohérente, selon le module, vous devez utiliser soit composer require npm-asset/js-lib ou composer require bower-asset/js-lib

Ajoutez les paramètres à composer.json comme indiqué sur Asset Packagist (voir Installation sur un chemin personnalisé ), et définissez le chemin d'installation spécifique à Drupal, par ex. quelque chose comme

"extra": {
    "installer-types": ["bower-asset", "npm-asset"],
    "installer-paths": {
        ....
        "web/libraries/{$name}": ["type:drupal-library", "type:bower-asset", "type:npm-asset"],
        ...
    }
}
2
Hudri