web-dev-qa-db-fra.com

Comment installer jQuery avec Composer?

J'ai pu installer des référentiels qui n'ont pas de fichier composer.json comme celui-ci:

    {
        "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" de la documentation, mais je n'ai pas trouvé beaucoup d'autres types. Par exemple, je dois installer jQuery, mais je ne sais pas quoi mettre en 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ètepour 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"
                }
            }
        }
    ]
56
ChocoDeveloper

C'est simplement une caractéristique manquante. Il devrait probablement y avoir un nouveau type de dist qui n'est qu'un fichier en texte clair à télécharger et à laisser tel quel. Veuillez déposer une demande de fonctionnalité sur le gestionnaire 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
naderman

En fait, il existe un moyen plus simple d’installer jQuery, il suffit de taper:

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

Il utilise Component Installer for Composer et par défaut, tous les actifs de Component sont installés sous components, mais ils peuvent être personnalisés. ( voir docs ).

39
César

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 numéro ultérieur oblige le compositeur à placer le JQuery où vous le souhaitez. Dans l'état actuel des choses, composer semble être limité au téléchargement de la source de dépendance sous vendor-dir (ce qui est gênant mais probablement lié aux exigences de chargement automatique). La solution générale à cette limitation est d'écrire un plugin composer qui la surmonte. Il semble y avoir quelques plugins capables de gérer cela. La solution la plus simple et la plus simple 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 sens que les modifications apportées par le plugin ne sont pas gérées/détectées par composer. Toujours utilisable.

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
spinkus

vous pouvez installer jquery en utilisant npm comme ceci, 

npm install jquery

https://www.npmjs.com/package/jquery

Utilisez npm, yarn ou WebPack au lieu de Composer, ils sont bien meilleurs pour ce type de besoins.

0
snoob dogg