Error al requerir un package usando Composer

Me gustaría solicitar este package en mi proyecto: lucianocosta / jquery.mtz.monthpicker

Así que lo agregué en mi file composer.json :

{ "name": "yiisoft/yii2-app-advanced", "description": "Yii 2 Advanced Application Template", "keywords": ["yii2", "framework", "advanced", "application template"], "homepage": "http://www.yiiframework.com/", "type": "project", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", "forum": "http://www.yiiframework.com/forum/", "wiki": "http://www.yiiframework.com/wiki/", "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, "minimum-stability": "stable", "require": { "php": ">=5.4.0", "yiisoft/yii2": "*", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", "yiisoft/yii2-gii": "*", "yiisoft/yii2-faker": "*", "google/apiclient": "1.0.*@beta", "asimlqt/php-google-spreadsheet-client": "2.2.*", "phpoffice/phpexcel": "*", "lucianocosta/jquery.mtz.monthpicker": "dev-master" }, "require-dev": { "yiisoft/yii2-codeception": "*", "yiisoft/yii2-debug": "*" }, "config": { "process-timeout": 1800 }, "extra": { "asset-installer-paths": { "npm-asset-library": "vendor/npm", "bower-asset-library": "vendor/bower" } } 

}

Luego ejecuto el command de composer update del composer update pero recibí este post:

Sus requisitos no se pudieron resolver en un set de packages instalable.

Problema 1 – El package solicitado lucianocosta / jquery.mtz.monthpicker no se pudo encontrar en ninguna versión, puede haber un error tipográfico en el nombre del package.

Causas potenciales:

  • Un error tipográfico en el nombre del package
  • El package no está disponible en una versión lo suficientemente estable de acuerdo con su configuration de estabilidad mínima

Sin alterar ninguna configuration de estabilidad mínima, ¿es posible que pueda requerir este package con éxito?

El package que necesita no es un package de Composer porque Composer es el administrador de packages PHP y el package que desea usar es solo para frontend.

Los packages frontend se mantienen con Bower, pero Yii le sugiere que instale el composer-assets-plugin que puede manejar packages Bower a través de composer.json y luego no necesita mantenerlos en bower.json separado.

Entonces necesitas encontrar el nombre correcto del package de Bower. Puede hacerlo a través del website http://bower.io/search/?q=monthpicker o si tiene instalado Bower puede search este package desde command-line de esta manera:

 bower search jquery.mtz.monthpicker Search results: monthpicker git://github.com/lucianocosta/jquery.mtz.monthpicker.git 

Cuando tenga el nombre de su package (en este caso, monthpicker ), solo tiene que agregarlo en la sección require de su composer.json con el prefijo bower-asset/ (en este caso bower-asset/monthpicker .

Aquí hay una versión fija de su sección de require :

 "require": { "php": ">=5.4.0", "yiisoft/yii2": "*", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", "yiisoft/yii2-gii": "*", "yiisoft/yii2-faker": "*", "google/apiclient": "1.0.*@beta", "asimlqt/php-google-spreadsheet-client": "2.2.*", "phpoffice/phpexcel": "*", "bower-asset/monthpicker": "dev-master" }, 

El problema es que el package solicitado no es un package de compositor (no tiene composer.json ) y no está disponible a través del repository packagist.org . Eso significa que el autor de este package no proporcionó soporte para el compositor.

Un repository es una fuente de package. Es una list de packages / versiones. Composer searchá en todos sus repositorys para encontrar los packages que requiere su proyecto.

Por defecto, solo el repository de Packagist está registrado en Composer. Puede agregar más repositorys a su proyecto al declararlos en composer.json.

Pero es posible registrar nuevos repositorys en su composer.json . El siguiente código registra un repository para lucianocosta/jquery.mtz.monthpicker y utiliza RobLoach/component-installer para sacarlos de la carpeta /vendor . Si no necesita esto, simplemente elimine el extra y la sección de require dentro de la sección del package .

 "repositories": [ { "type": "package", "package": { "name": "lucianocosta/jquery.mtz.monthpicker", "version": "1.0", "type": "component", "dist": { "url": "https://github.com/lucianocosta/jquery.mtz.monthpicker/archive/master.zip", "type": "zip" }, "extra": { "component": { "scripts": [ "jquery.mtz.monthpicker.js" ] } }, "require": { "robloach/component-installer": "*" } } } ], "require": { "lucianocosta/jquery.mtz.monthpicker": "1.*" },