Calendar Icon - Dark X Webflow Template
October 2023
Clock Icon - Dark X Webflow Template
10
min lectura

Creando un paquete propio de Laravel

Cuando trabajas en un proyecto de Laravel, es posible que necesites instalar algún paquete que añada características necesarias a tu proyecto, ya sea funcionalidades para poder trabajar con imágenes, archivos Excel o archivos PDF, entre otras. Pero, ¿sabías que también puedes crear tu propio paquete que añada funcionalidades que necesites y además utilizarlo en cada proyecto que lo requieras?

Antes de empezar a construir tu propio paquete permíteme adelantarte que esta será una guía básica que tendrá en cuenta que el lector ya conoce acerca de Laravel y su estructura en general además de conocer otras tecnologías necesarias como Composer y PHP. Si deseas conocer más acerca del framework te recomiendo visitar su documentación oficial en el siguiente link: https://laravel.com/docs/10.x

Para empezar a desarrollar tu paquete es útil que consideres que un paquete realmente se puede ver como un proyecto de Laravel reducido, ya que en realidad solo necesitas ciertos componentes de un proyecto normal para poder crearlo, estos componentes necesarios son:

·         Un archivo composer.json: En este archivo se van a declarar las características del paquete como son su nombre, descripción, versión, palabras clave, licencia, autores, otros paquetes que requiere, etc. Muy parecido al archivo composer.json de un proyecto normal.

·         Un directorio source: En este directorio generalmente se agregan los archivos fuente del paquete, como controladores, rutas, modelos y el archivo provider.

·         Un archivo serviceprovider.php: Este archivo puede realizar configuraciones como cargar las rutas o copiar los archivos de configuración del paquete al proyecto de Laravel.

A continuación, te describiré de manera más específica cada uno de los elementos anteriormente mencionados y los requisitos mínimos necesarios para su funcionamiento.

composer.json

Para que tu paquete puede ser reconocido como tal en cualquier proyecto que decidas implementarlo es necesario definir parámetros importantes:

name: Este parámetro debe empezar por el vendor-name que puede ser tu nombre o nombre de la organización que lo desarrolle, continuado por un slash o diagonal, y después por el nombre del paquete. Solo permite caracteres alfanuméricos en minúsculas, sin acentos o espacios, puedes separar palabras con un guion medio.

version: Es importante definir una versión inicial para poder instalarlo en el composer de un proyecto de Laravel.

type: Para que tu paquete pueda ser reconocido por Laravel es importante definir este parámetro como library.

license: Si planeas subir tu paquete a algún repositorio público para que más personas pueden utilizarlo puedes definir el tipo de licencia que tendrá tu paquete.

require: En este parámetro como en un proyecto normal de Laravel se pueden definir otros paquetes que pueda requerir el tuyo, además de la versión de PHP y Laravel en la que funcionan.

autoload: En este parámetro indicas la versión de psr, el namespace de tu paquete y desde que directorio serán cargados tus recursos.

extra: Aquí es necesario indicar el nombre y ruta de tu archivo provider, utilizando el namespace definido en el parámetro anterior.

A continuación te muestro un ejemplo de un archivo composer.json con las características mínimas para su funcionamiento:

"name": "webdecero/paquete-prueba",

    "description": "Paquete Prueba",

    "version": "1.0.0",

    "type": "library",

    "keywords": ["webdecero", "laravel", "package"],

    "license": "MIT",

    "authors": [

        {

            "name": "Mayer Abraham Pérez González"

        }

    ],

    "minimum-stability": "dev",

"require": {

        "php": "^8.1"

    },

    "autoload": {

        "psr-4": {

            "Webdecero\\Prueba\\": "src"

        }

    },

    "autoload-dev": {

        "psr-4": {

            "Webdecero\\Prueba\\Tests\\": "tests"

        }

    },

    "extra": {

        "laravel": {

            "providers": [

                "Webdecero\\Prueba\\WebdeceroServiceProvider"

            ]

        }

    }

}

Directorio source

En este directorio debes agregar los archivos necesarios con las funcionalidades que tendrá tu paquete. Puedes agregar controladores, vistas de Blade, modelos, rutas, etc. Además, es donde debes agregar tu archivo serviceprovider.

Un ejemplo de este directorio puede ser:

 

serviceprovider.php

Este archivo nos ayuda principalmente a que se carguen las rutas o archivos de configuración si es que existen en nuestro paquete. Es una clase que extiende del ServiceProvider de Laravel, con la que podemos definir dos métodos útiles para la carga automática de nuestros recursos.

A continuación, te muestro un ejemplo de este archivo, donde especificamos la cargar de las rutas de nuestro paquete:

Finalmente, estos son los componentes mínimos necesarios para que puedas crear tu propio paquete. La estructura general del paquete quedaría como la siguiente:

 <?php

namespace Webdecero\Prueba;

use Illuminate\Support\ServiceProvider;

class WebdeceroServiceProvider extends ServiceProvider {

    /**

     * Bootstrap the application services.

     *

     * @return void

     */

    public function boot() {

        $this->bootRoutes();  

    }

    /**

     * Register the application services.

     *

     * @return void

     */

    public function register() {

    }

    private function bootRoutes() {

        $this->loadRoutesFrom(__DIR__ . '/routes/webdecero.php');

    }

}


Conclusión

En un principio puede parecer un proceso complicado crear un paquete para Laravel pero cuando aprendes a hacerlo resulta sencillo y muy ventajoso, ya que es una manera muy práctica para reutilizar controladores, rutas y modelos en diversos proyectos, lo que te ahorra esfuerzo y tiempo de desarrollo.