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"
}
}
}
]
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"
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 ).
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": "*"
}
}
}
}
vous pouvez installer jquery en utilisant npm comme ceci,
npm install jquery
Utilisez npm
, yarn
ou WebPack
au lieu de Composer, ils sont bien meilleurs pour ce type de besoins.