it-swarm-es.com

Cómo agregar un paquete composer sin modificar el archivo core composer.json

Estoy tratando de agregar un Composer Package y hacer que esté disponible globalmente, pero no quiero modificar core composer.json por razones obvias.

¿Es la única manera de hacer esto tener un composer.json en la raíz de Joomla (o fuera de la raíz de Joomla) e incluir el autocargador en index.php o define.php? ¿O la mejor práctica actual para incluir los paquetes en cada una de las extensiones según sea necesario?

El paquete que estoy tratando de incluir es https://github.com/nette/forms y lo hago disponible a nivel mundial para que pueda usarlo para formularios de front-end.

4
sifu

Sospecho que modificar el archivo composer.json raíz de Joomla vendrá con Joomla 4. Mientras tanto, creo que la mejor manera de usar los paquetes composer es incluir un composer.phar en un complemento de sistema personalizado y luego llame al autocargador en el evento onAfterRoute. Luego está disponible globalmente o si solo desea cargar el autocargador para 1 componente, por ejemplo, podría extraer el valor de la opción del jinput y simplemente envolver la declaración require en un if. ADVERTENCIA: verificar la carpeta de la biblioteca de Joomla antes de incluir paquetes adicionales y no instale ninguno de los paquetes que Joomla ya incluye porque el autocargador de Joomla y su autocargador no pueden coordinar diferentes versiones de paquetes y ¡puede romper todo! ¡¡Dicho esto probablemente nunca sucederá O causar algún problema.

<?php 
defined('_JEXEC') or die('Restricted access');

class plgSystemYayComposer extends JPlugin
{
    function onAfterRoute()
    {
        require_once(JPATH_ROOT . '/plugins/system/yaycomposer/composer/vendor/autoload.php');
    }
}

Obviamente, esta técnica no es aplicable al desarrollo para la distribución de componentes, etc. Probablemente también deba eliminar el archivo phar en lugar de dejarlo in situ, y/o bloquear todo el acceso web al directorio con un archivo htaccess pero, ya sabes, yo No soy tu papá.

4
jamesgarrett