Comment installer jQuery avec Composer?

J'ai pu installer des référentiels qui n'ont pas de compositeur.fichier json comme ceci:

    {
        "type": "package",
        "package": {
            "name": "yahoo/yui-compressor",
            "version": "2.0.4",
            "dist": {
                "url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip",
                "type": "zip"
            }
        }
    },

J'ai pris la partie "type": "zip" des docs, mais je n'ai pas trouvé beaucoup d'autres types. Par exemple, j'ai besoin d'installer jQuery, mais je ne sais pas quoi mettre dans le type ("js" n'a pas fonctionné).

    {
        "type": "package",
        "package": {
            "name": "jquery/jquery",
            "version": "1.7.2",
            "dist": {
                "url": "http://code.jquery.com/jquery-1.7.2.js",
                "type": "js"
            }
        }
    }

Des idées?

EDIT : j'ajoute la solution complète pour aider @ CMCDragonkai:

    "require": {
        "vendorname/somefile": "1.2.3",
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "vendorname/somefile",
                "version": "1.2.3",
                "dist": {
                    "url": "http://example.com/somefile.txt",
                    "type": "file"
                }
            }
        }
    ]
55
demandé sur ChocoDeveloper 2012-07-26 10:22:58

3 réponses

Ceci est simplement une fonctionnalité manquante. Il devrait probablement y avoir un nouveau type de dist qui est juste un seul fichier en texte brut à télécharger et à laisser tel quel. Veuillez déposer une demande de fonctionnalité sur le tracker de problèmes github: https://github.com/composer/composer/issues/

Modifier:

La fonctionnalité existe réellement mais n'a pas été documentée.

"type": "file"
34
répondu naderman 2012-07-27 12:03:44

En fait, il existe un moyen plus facile d'installer jQuery, il suffit de taper:

{
    "require": {
        "components/jquery": "1.9.*"
    }
}

Il utilise Component Installer pour Composer et par défaut tous les actifs du composant sont installés sous components, mais il peut être personnalisé. (voir docs).

39
répondu César 2013-06-06 23:51:46

Comme indiqué précédemment, la première partie de la solution consiste à définir vos propres référentiels et l'option de définition de référentiel "type: ": "file". Mais un problème ultérieur consiste à amener composer à mettre le JQuery où vous le voulez. En l'état, composer semble se limiter au téléchargement de la source de dépendance sous vendor-dir (ce qui est ennuyeux mais probablement lié aux exigences de chargement automatique). Le correctif général de cette limitation est d'écrire un plugin composer qui le surmonte. Semble être quelques plugins qui peuvent gérer ce. La solution la plus simple et la plus légère que j'ai trouvée est PHP Composer Asset Manager , qui est dédié à la gestion des "actifs"non PHP/Composer. Cependant, il a au moins une limitation en ce que les changements que le plugin fait ne sont pas gérés / détectés par composer. Encore utilisables.

Voici un composer.json complet pour installer JQuery en utilisant ce plugin:

{
  "name": "foo/bar",
  "require":
  {
    "phpclasses/assets": "*",
     "jquery/jquery": "*"
  },
  "repositories": [
    {
     "type": "composer",
     "url": "http://www.phpclasses.org/"
    },
    {
      "type": "package",
      "package": {
        "name": "jquery/jquery",
        "version": "1.7.2",
        "type": "jquery",
        "dist": {
          "url": "http://code.jquery.com/jquery-1.7.2.js",
          "type": "file"
        }
      }
    }
  ],
  "extra": {
    "assets": {
      "actions": [
        {
          "type": "copy",
          "target": "webroot/js",
          "pattern": "\\.js$"
        }
      ],
      "packages": {
        "jquery/jquery": "*"
      }
    }
  }
}
2
répondu spinkus 2014-12-02 07:09:28