Saltar al contenido principal

Introducción

Un starter kit es un proyecto plantilla que se despliega con create-project cuando ejecutas laravel new. Los starter kits oficiales de Laravel 13 son cuatro (React / Vue / Svelte / Livewire) e incluyen autenticación y la UI inicial. Cuando creas un starter kit propio, el proceso es el mismo: partes de una aplicación Laravel, la preparas y la publicas como un paquete de Composer.

Crear el starter kit

Inicializar el proyecto Laravel

Crea un proyecto Laravel base y limpia el código de ejemplo innecesario. Después, asigna un nombre de paquete único en el name de composer.json.
{
    "name": "example/starter-kit",
    "type": "project",
    "require": {
        "php": "^8.3",
        "laravel/framework": "^13.0"
    }
}
Este name es el identificador que se usará después con laravel new my-app --using=example/starter-kit.

Configura los scripts de composer.json

Cuando el usuario ejecute laravel new, se usarán los Composer scripts del starter kit como flujo de inicialización. Como mínimo, deja preparados post-root-package-install y post-create-project-cmd.
"scripts": {
    "post-root-package-install": [
        "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "@php artisan key:generate --ansi",
        "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
        "@php artisan migrate --graceful --ansi"
    ]
}
Este ejemplo está basado en el composer.json de laravel/react-starter-kit. Si tu kit usa base de datos, puedes reutilizarlo tal cual.

Controla los archivos distribuidos con .gitattributes

Con export-ignore puedes excluir archivos que quieres tener en el repositorio del starter kit pero que no debería recibir el proyecto del usuario.
LICENSE export-ignore
composer.lock export-ignore
README.md export-ignore
Para más detalle, mira el ejemplo oficial de .gitattributes.

Registro en Packagist

Para que los usuarios puedan usar --using, hay que registrar el paquete en Packagist.
1

Prepara un repositorio público en GitHub

Publícalo alineando el name de composer.json con la URL del repositorio.
2

Regístralo en Packagist

Registra el repositorio en Packagist. Tras la publicación, example/starter-kit será resoluble.
3

Documenta el comando de uso en el README

Añade para los usuarios el siguiente comando de instalación.
laravel new my-app --using=example/starter-kit

Flujo del comando laravel new

El NewCommand de laravel/installer cambia el destino de create-project cuando se especifica un starter kit y ejecuta secuencialmente los comandos de inicialización. Lugares interesantes en NewCommand.php:

Elección de framework frontend

Los starter kits oficiales de Laravel 13 ofrecen React / Vue / Svelte / Livewire, pero tu starter kit propio no tiene por qué ceñirse a esa lista. Elige libremente CSS, librería de componentes y método de autenticación según tu objetivo.
OpciónComposición principalCuándo encaja
React / Vue / Svelte / Livewire oficialesConfiguración oficial con Inertia 3 o Livewire 4Cuando quieres ofrecer una experiencia cercana a la oficial.
Frontend propioCSS y librería de componentes a elecciónCuando quieres usar un design system o base CSS propios.
Kit Blade sencilloCentrado en Blade con mínimas dependencias frontCuando buscas un arranque ligero y rápido.
Kit de autenticación propioNo obligado a Fortify (p. ej. centrado en Socialite)Cuando te especializas en un método de autenticación concreto.
Es habitual que los starter kits de la comunidad usen bases CSS distintas a la oficial. Tampoco es obligatorio partir de Fortify: diseña la autenticación según tus requisitos.

Mantenimiento de versiones

Un starter kit no acaba «al terminar de crearlo». Debe evolucionar con Laravel y PHP.

Adaptación a nuevas versiones de Laravel/PHP

Actualiza primero los requisitos en composer.json y verifica la compatibilidad en CI.
"require": {
    "php": "^8.3",
    "laravel/framework": "^13.0"
}
En una versión mayor de Laravel, revisa a la vez laravel/framework y las dependencias colindantes.

Actualización periódica de dependencias

Las dependencias del frontend cambian rápido, así que es seguro tener una tarea mensual de actualización.
  • Tailwind
  • Librerías de componentes (shadcn/ui, shadcn-vue, shadcn-svelte, Flux UI)
  • Paquetes relacionados con Inertia / Livewire

Tests de compatibilidad

Incluye al menos estas comprobaciones en CI:
  • Que composer install funciona.
  • Que php artisan test pasa.
  • Que npm install && npm run build termina correctamente.

Buenas prácticas

  • Fija el name cuanto antes: cambiarlo después de publicar en Packagist es costoso.
  • Basa los scripts en el ejemplo oficial: si rompes el flujo de inicialización, aumentan los problemas de instalación.
  • Configura .gitattributes desde el principio: reduce el ruido en las plantillas distribuidas.
  • Automatiza las actualizaciones: monta una operativa que te permita seguir a Laravel de inmediato tras cada release.
  • Lee guías relacionadas: leer Fundamentos del desarrollo de paquetes y Gestión de la compatibilidad de versiones de paquetes hace que tu diseño sea más estable.
Última modificación el 13 de julio de 2026