Comandes integrades
Les comandes Artisan integrades més útils: generació de codi, migracions, cache, manteniment, rutes, cues i més.
Laravel ve amb més de cent comandes Artisan integrades que cobreixen pràcticament totes les necessitats del desenvolupament i el manteniment d'una aplicació web. Des de la generació de codi fins a la gestió de la base de dades, des de l'optimització del rendiment fins al desplegament en producció, aquestes comandes formen l'esquelet operatiu de qualsevol projecte Laravel. Conèixer-les bé no és un luxe: és una necessitat pràctica que et farà molt més productiu perquè evitaràs reinventar solucions que el framework ja proporciona.
Les comandes integrades estan organitzades per namespaces que reflecteixen la seva funció: make:* per a generació de codi, migrate:* per a migracions, cache:* per a gestió de cache, queue:* per a cues de treball, schedule:* per a tasques programades, i així successivament. Aquesta organització fa que sigui intuïtiu trobar la comanda que necessites i que les comandes relacionades estiguin agrupades de manera lògica.
Comandes d'informació general#
Abans de fer servir qualsevol comanda, és útil saber quines comandes estan disponibles i com funcionen. Artisan inclou comandes d'introspecció que t'ajuden a navegar per la CLI i entendre les opcions de cada comanda.
La comanda list mostra totes les comandes disponibles organitzades per namespace. Si acabes d'instal·lar un paquet nou i vols saber quines comandes ha registrat, list és el lloc on mirar. La comanda help mostra la documentació detallada d'una comanda específica, incloent-hi la descripció, els arguments obligatoris i opcionals, les opcions disponibles (flags) i exemples d'ús. Acostuma't a fer servir help abans d'executar una comanda que no coneixes bé: és molt millor llegir la documentació que descobrir les opcions per assaig i error:
# Llistar totes les comandes disponibles
php artisan list
# Filtrar comandes per namespace
php artisan list make
# Veure l'ajuda detallada d'una comanda
php artisan help migrate
# Veure l'ajuda d'una comanda (forma abreujada)
php artisan migrate --helpLa comanda about mostra informació completa sobre el projecte: la versió de Laravel, la versió de PHP, l'entorn actual, el mode de depuració, l'URL de l'aplicació, els drivers configurats per a cache, sessions, cues i base de dades, i molt més. És una eina excel·lent per diagnosticar problemes de configuració i per verificar que l'entorn de producció està configurat correctament. Quan un company de l'equip reporta un problema, una de les primeres coses que hauries de demanar és la sortida de php artisan about:
# Informació completa del projecte
php artisan about
# Filtrar per secció específica
php artisan about --only=environmentGeneració de codi (make:*)#
Les comandes make:* són probablement les que faràs servir amb més freqüència durant el desenvolupament. Cada comanda make:* genera un fitxer PHP amb l'estructura correcta, al directori correcte i amb el namespace adequat. Això no és simplement una qüestió de comoditat: garanteix que tots els fitxers del projecte segueixin les convencions de Laravel, cosa que facilita la col·laboració en equip i redueix els errors per fitxers mal ubicats o mal estructurats.
Models i recursos associats#
La comanda make:model és una de les més potents perquè permet generar no només el model sinó també tots els recursos associats en una sola crida. Les flags disponibles són: -m per a la migració, -f per a la factory, -s per al seeder, -c per al controlador, --policy per a la policy, -R per al resource controller i --api per a un API resource controller. Combinar-les en una sola comanda et permet crear tota l'estructura necessària per a un nou recurs en segons:
# Crear només el model
php artisan make:model Article
# Crear model amb migració
php artisan make:model Article -m
# Crear model amb migració, factory, seeder i controlador
php artisan make:model Article -mfsc
# Crear model amb tot: migració, factory, seeder, controlador amb resource i policy
php artisan make:model Article -mfsc --policy
# Crear model amb controlador de resource API
php artisan make:model Article --api -mfs
# Crear model amb totes les opcions possibles
php artisan make:model Article --allCada flag crea el fitxer corresponent amb la referència correcta al model. La migració tindrà el nom de la taula en plural (articles), la factory referenciara el model Article, el seeder importarà la factory, i el controlador tindrà els mètodes resource (index, create, store, show, edit, update, destroy) ja preparats amb les injeccions de dependència correctes.
Controladors#
La comanda make:controller ofereix diverses opcions per generar controladors amb diferents estructures. Un controlador resource inclou els set mètodes CRUD estàndard. Un controlador API resource és igual però sense els mètodes create i edit (que mostren formularis HTML i no tenen sentit en una API). Un controlador invocable (--invocable) té un sol mètode __invoke i és ideal per a accions úniques com processar un pagament o generar un informe:
# Controlador buit
php artisan make:controller ArticleController
# Controlador resource (index, create, store, show, edit, update, destroy)
php artisan make:controller ArticleController --resource
# Controlador API resource (sense create ni edit)
php artisan make:controller ArticleController --api
# Controlador invocable (un sol mètode __invoke)
php artisan make:controller GenerateReportController --invocable
# Controlador resource vinculat a un model (amb type hints i route model binding)
php artisan make:controller ArticleController --resource --model=Article
# Controlador amb form requests per a store i update
php artisan make:controller ArticleController --resource --model=Article --requestsMiddleware, requests i altres components#
Cada component de Laravel té la seva comanda make:* corresponent. La llista és extensa i cobreix pràcticament tot el que necessitaràs. Cada comanda genera el fitxer al directori correcte dins d'app/, amb el namespace adequat i l'estructura base del component:
# Middleware
php artisan make:middleware EnsureUserIsAdmin
# Form Request (validació)
php artisan make:request StoreArticleRequest
# API Resource (transformació de dades)
php artisan make:resource ArticleResource
# API Resource Collection
php artisan make:resource ArticleCollection --collection
# Job (tasca en segon pla)
php artisan make:job ProcessPodcast
# Event
php artisan make:event OrderPlaced
# Listener
php artisan make:listener SendOrderConfirmation --event=OrderPlaced
# Notification
php artisan make:notification OrderShipped
# Mailable
php artisan make:mail WelcomeEmail --markdown=emails.welcome
# Rule (regla de validació personalitzada)
php artisan make:rule Uppercase
# Policy (autorització)
php artisan make:policy ArticlePolicy --model=Article
# Observer
php artisan make:observer ArticleObserver --model=Article
# Comanda d'Artisan personalitzada
php artisan make:command SendWeeklyReport
# Cast (conversió de tipus Eloquent)
php artisan make:cast Json
# Enum
php artisan make:enum OrderStatus
# Interface
php artisan make:interface PaymentGateway
# Classe genèrica
php artisan make:class Services/PaymentService
# Provider
php artisan make:provider PaymentServiceProvider
# Seeder
php artisan make:seeder ArticleSeeder
# Factory
php artisan make:factory ArticleFactory --model=Article
# Test
php artisan make:test ArticleTest
php artisan make:test ArticleTest --unit
# Exception personalitzada
php artisan make:exception PaymentFailedException
# Channel de broadcasting
php artisan make:channel OrderChannel
# Component Blade
php artisan make:component AlertBox
php artisan make:component Forms/Input
# View (plantilla Blade)
php artisan make:view articles.indexFixa't que moltes comandes accepten flags addicionals que modifiquen el contingut generat. Per exemple, make:listener --event=OrderPlaced genera un listener amb la importació de l'event ja configurada. make:policy --model=Article genera una policy amb tots els mètodes d'autorització (viewAny, view, create, update, delete, etc.) ja vinculats al model. make:mail --markdown=emails.welcome genera un mailable amb una plantilla Markdown en lloc d'una vista Blade normal. Sempre val la pena consultar php artisan help make:<component> per descobrir totes les opcions disponibles.
Comandes de base de dades#
Les comandes de base de dades gestionen tot el cicle de vida de l'esquema: des de la creació inicial de les taules fins a les actualitzacions incrementals, passant pel poblement amb dades de prova i la inspecció de l'estructura existent. Aquestes comandes són fonamentals perquè permeten que l'esquema de la base de dades estigui versionat amb el codi i que tots els membres de l'equip treballin amb la mateixa estructura.
Migracions#
Les migracions són fitxers PHP que descriuen canvis a l'esquema de la base de dades. La comanda migrate aplica les migracions pendents, és a dir, les que encara no s'han executat a la base de dades actual. Laravel manté una taula migrations que registra quines migracions s'han aplicat, permetent-li saber quines són noves i cal executar:
# Executar totes les migracions pendents
php artisan migrate
# Executar migracions amb confirmació en producció
php artisan migrate --force
# Veure l'estat de les migracions (quines s'han aplicat i quines no)
php artisan migrate:status
# Desfer l'últim lot de migracions
php artisan migrate:rollback
# Desfer un nombre específic de migracions
php artisan migrate:rollback --step=3
# Desfer totes les migracions
php artisan migrate:reset
# Desfer totes les migracions i tornar a executar-les
php artisan migrate:refresh
# Desfer i tornar a executar amb seeders
php artisan migrate:refresh --seed
# Eliminar totes les taules i tornar a migrar (destructiu, ideal per desenvolupament)
php artisan migrate:fresh
# Eliminar taules, migrar i seedar
php artisan migrate:fresh --seedLa diferència entre migrate:refresh i migrate:fresh és important. refresh executa els mètodes down() de cada migració en ordre invers i després torna a executar tots els up(). Això depèn de que tots els mètodes down() estiguin correctament implementats. fresh és més radical: elimina directament totes les taules de la base de dades (fent DROP TABLE) i després executa totes les migracions des de zero. fresh és més fiable quan les migracions down() no estan ben mantingudes, però evidentment mai s'ha de fer servir en producció perquè elimina totes les dades.
Informació de la base de dades#
Laravel inclou comandes per inspeccionar la base de dades actual sense necessitat d'obrir un client SQL extern. Aquestes comandes són molt útils per verificar ràpidament l'estructura de les taules, les connexions actives i l'estat general de la base de dades:
# Informació general de la base de dades (versió, driver, taules, mida)
php artisan db:show
# Informació detallada d'una taula (columnes, tipus, índexs)
php artisan db:table users
# Monitoritzar connexions obertes a la base de dades
php artisan db:monitor
# Obrir el client de base de dades directament (mysql, psql, sqlite3)
php artisan dbLa comanda db:show mostra un resum complet de la connexió: el driver (MySQL, PostgreSQL, SQLite), la versió del servidor, el nombre de taules, la mida total i la configuració de la connexió. db:table és particularment útil per veure les columnes d'una taula amb els seus tipus, valors per defecte, si permeten nulls i quins índexs tenen. Això t'estalvia obrir phpMyAdmin o TablePlus per consultar l'esquema ràpidament.
Seeders#
Els seeders poblen la base de dades amb dades, ja siguin dades de prova per al desenvolupament o dades inicials necessàries per al funcionament de l'aplicació (com rols, permisos, categories per defecte, etc.):
# Executar el seeder principal (DatabaseSeeder)
php artisan db:seed
# Executar un seeder específic
php artisan db:seed --class=ArticleSeeder
# Executar seeders després de migrar
php artisan migrate --seed
php artisan migrate:fresh --seedCache i optimització#
La gestió de la cache és una de les àrees on és important entendre la diferència entre l'entorn de desenvolupament i l'entorn de producció. Durant el desenvolupament, vols que els canvis als fitxers de configuració, rutes i vistes es reflecteixin immediatament, sense necessitat de netejar cap cache. En producció, vols que tot estigui cachetat per maximitzar el rendiment. Les comandes de cache d'Artisan gestionen ambdós escenaris.
Netejar caches#
Les comandes clear eliminen les caches generades. Durant el desenvolupament, les faràs servir quan un canvi no es reflecteix com esperes. El problema més comú és modificar un fitxer de configuració o una variable d'entorn i no veure el canvi perquè la cache de configuració encara serveix els valors antics:
# Netejar la cache de l'aplicació (valors guardats amb Cache::put, Cache::remember, etc.)
php artisan cache:clear
# Netejar la cache de configuració
php artisan config:clear
# Netejar la cache de rutes
php artisan route:clear
# Netejar la cache de vistes compilades
php artisan view:clear
# Netejar la cache d'events
php artisan event:clear
# Netejar TOTES les caches alhora (configuració, rutes, vistes, events i cache general)
php artisan optimize:clearGenerar caches (producció)#
Les comandes cache generen fitxers de cache optimitzats. En producció, executar-les és essencial perquè eviten que Laravel hagi de llegir i processar múltiples fitxers a cada petició. La cache de configuració, per exemple, fusiona desenes de fitxers de configuració en un sol fitxer PHP que es carrega molt més ràpid. La cache de rutes serialitza les definicions de rutes en un format optimitzat que pot ser carregat directament sense necessitat de processar les closures i atributs de cada ruta:
# Cachejar la configuració (fusiona tots els fitxers config/ en un sol fitxer)
php artisan config:cache
# Cachejar les rutes (serialitza les definicions de rutes)
php artisan route:cache
# Cachejar les vistes (precompila totes les plantilles Blade)
php artisan view:cache
# Cachejar els events (serialitza el mapeig events-listeners)
php artisan event:cache
# Optimitzar tot alhora (config:cache + route:cache + view:cache + event:cache)
php artisan optimizeUn punt important que sovint causa confusió: quan la cache de configuració està activa (config:cache), les crides a env() fetes fora dels fitxers de configuració retornaran null. Això és perquè Laravel deixa de llegir el fitxer .env i utilitza exclusivament el fitxer de cache. Per tant, utilitza sempre config('app.key') en lloc de env('APP_KEY') al codi de l'aplicació, i reserva env() per als fitxers de configuració que es troben a config/.
En un desplegament típic, l'ordre correcte és primer netejar les caches antigues i després generar les noves:
# Script de desplegament típic
php artisan optimize:clear # Netejar tot
php artisan optimize # Cachejar tot
php artisan migrate --force # Aplicar migracions pendentsServidor de desenvolupament#
La comanda serve arrenca un servidor web PHP integrat que serveix la teva aplicació Laravel. És la manera més ràpida de començar a treballar amb una aplicació sense necessitat de configurar Apache, Nginx, Sail o cap altre servidor. El servidor integrat és perfecte per al desenvolupament, però no s'ha de fer servir en producció perquè no està optimitzat per a concurrència ni rendiment:
# Arrancar el servidor a http://localhost:8000
php artisan serve
# Especificar un port diferent
php artisan serve --port=8080
# Especificar el host (per accedir des d'altres dispositius a la xarxa)
php artisan serve --host=0.0.0.0
# Especificar host i port alhora
php artisan serve --host=0.0.0.0 --port=3000Per defecte, serve escolta a 127.0.0.1:8000, que només és accessible des de la mateixa màquina. Si vols accedir a l'aplicació des d'un altre dispositiu de la mateixa xarxa (per exemple, per provar-la al mòbil), utilitza --host=0.0.0.0 per escoltar a totes les interfícies de xarxa.
Mode de manteniment#
Quan necessites fer actualitzacions, migracions o qualsevol operació que pugui afectar els usuaris, el mode de manteniment permet mostrar una pàgina informativa mentre treballes. Laravel ofereix diverses opcions per personalitzar el comportament del mode de manteniment, incloent-hi la possibilitat de permetre l'accés a certs usuaris amb un secret, redirigir a una URL externa o establir capçaleres HTTP per indicar quan l'aplicació tornarà a estar disponible.
Activar i desactivar#
# Activar el mode de manteniment (503 Service Unavailable)
php artisan down
# Desactivar el mode de manteniment
php artisan upAccés amb secret#
L'opció --secret genera una URL especial que permet als desenvolupadors accedir a l'aplicació mentre està en manteniment. Quan accedeixes a l'URL amb el secret, Laravel estableix una cookie al navegador que et permet navegar per l'aplicació normalment. Això és molt útil per verificar que tot funciona correctament abans d'obrir l'accés a tothom:
# Activar manteniment amb un token d'accés secret
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
# Ara pots accedir a: https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
# Això estableix una cookie i et permet navegar normalmentRedirecció i capçaleres#
# Redirigir totes les peticions a una URL externa
php artisan down --redirect=/
# Indicar als clients quan tornar a intentar (capçalera Retry-After en segons)
php artisan down --retry=60
# Indicar als clients que refresquin automàticament
php artisan down --refresh=15
# Combinar opcions
php artisan down --secret="abc123" --retry=120Vista personalitzada de manteniment#
Per defecte, Laravel mostra una vista genèrica durant el mode de manteniment. Pots personalitzar-la creant la vista resources/views/errors/503.blade.php. Alternativament, l'opció --render permet especificar una vista diferent:
# Utilitzar una vista personalitzada per al mode de manteniment
php artisan down --render="maintenance::custom"Pre-renderitzar la vista de manteniment#
Hi ha un problema subtil amb el mode de manteniment: la vista de manteniment es renderitza dins del cicle de vida normal de Laravel, cosa que significa que si l'error és precisament que Laravel no pot arrencar (per exemple, per un error de configuració o una migració destructiva), la vista de manteniment tampoc es podrà mostrar. Per evitar aquest problema, pots pre-renderitzar la vista de manteniment en un fitxer HTML estàtic que es servirà directament sense necessitat que Laravel arrenqui:
# Pre-renderitzar la vista de manteniment en un fitxer estàtic
php artisan down --render="errors::503" --secret="abc123"Inspecció de rutes#
La comanda route:list és una de les eines de depuració més útils d'Artisan. Mostra totes les rutes registrades a l'aplicació amb el seu mètode HTTP, URI, nom, middleware assignat i acció (controlador i mètode). Quan una ruta no funciona com esperes, el primer pas és comprovar amb route:list que la ruta existeix, que té el mètode HTTP correcte i que apunta al controlador correcte.
A mesura que l'aplicació creix, la llista de rutes pot ser molt llarga. Les opcions de filtratge permeten centrar-se en les rutes que t'interessen:
# Llistar totes les rutes
php artisan route:list
# Filtrar per URI
php artisan route:list --path=api
# Filtrar per nom de ruta
php artisan route:list --name=articles
# Filtrar per mètode HTTP
php artisan route:list --method=GET
# Mostrar només rutes amb middleware específic
php artisan route:list --middleware=auth
# Excloure rutes de paquets de tercers (mostrar només les rutes de l'aplicació)
php artisan route:list --except-vendor
# Mostrar rutes de paquets de tercers
php artisan route:list --only-vendor
# Ordenar per nom
php artisan route:list --sort=name
# Mostrar la informació en format JSON
php artisan route:list --json
# Invertir l'ordre
php artisan route:list --reverseLa combinació de filtres és particularment útil. Per exemple, si vols veure totes les rutes GET de la teva API que requereixen autenticació:
php artisan route:list --path=api --method=GET --middleware=authComandes de cues#
Les cues permeten diferir l'execució de tasques costoses (enviar correus, processar imatges, generar informes) perquè es facin en segon pla sense fer esperar l'usuari. Les comandes de cues gestionen els workers que processen aquestes tasques. Entendre la diferència entre queue:work i queue:listen és important per a l'eficiència en producció.
La comanda queue:work arrenca un worker que processa els jobs de la cua. És la comanda que faràs servir en producció. El worker arrenca l'aplicació una sola vegada i la manté en memòria, processant jobs sense necessitat de rearrancar Laravel per a cada job. Això és molt eficient, però significa que si canvies el codi de l'aplicació, has de reiniciar el worker perquè els canvis tinguin efecte:
# Arrancar un worker per a la cua per defecte
php artisan queue:work
# Especificar la connexió i la cua
php artisan queue:work redis --queue=emails
# Limitar el nombre de jobs a processar
php artisan queue:work --max-jobs=100
# Limitar el temps d'execució del worker
php artisan queue:work --max-time=3600
# Especificar el temps d'espera entre jobs
php artisan queue:work --sleep=3
# Especificar el nombre de reintentos per a jobs que fallen
php artisan queue:work --tries=3
# Especificar el timeout per a cada job
php artisan queue:work --timeout=60
# Aturar el worker si la memòria supera un límit
php artisan queue:work --memory=128La comanda queue:listen és similar però menys eficient: reinicia l'aplicació per a cada job. L'avantatge és que detecta els canvis al codi automàticament. Utilitza queue:listen durant el desenvolupament i queue:work en producció:
# Worker que reinicia l'aplicació per a cada job (desenvolupament)
php artisan queue:listenDesprés de desplegar canvis al codi, has de reiniciar els workers perquè carreguin el codi nou. La comanda queue:restart envia un senyal a tots els workers actius perquè es reiniciïn de manera elegant (acaben el job actual i es reinicien):
# Reiniciar tots els workers (després d'un desplegament)
php artisan queue:restartGestió de jobs fallits#
Quan un job falla després d'esgotar els reintentos, Laravel el mou a la taula failed_jobs. Les comandes de jobs fallits permeten inspeccionar, reintentar i eliminar aquests jobs:
# Llistar tots els jobs fallits
php artisan queue:failed
# Reintentar un job fallit específic (per ID)
php artisan queue:retry 5
# Reintentar tots els jobs fallits
php artisan queue:retry all
# Eliminar un job fallit específic
php artisan queue:forget 5
# Eliminar tots els jobs fallits
php artisan queue:flush
# Crear la taula de jobs fallits (si no existeix)
php artisan make:queue-failed-table
php artisan migrateComandes del Scheduler#
El Scheduler de Laravel permet programar tasques recurrents directament des del codi PHP, sense necessitat de configurar múltiples entrades de cron al servidor. Només necessites una sola entrada de cron que executi schedule:run cada minut, i Laravel s'encarrega de decidir quines tasques toca executar en cada moment:
# Executar les tasques programades pendents
php artisan schedule:run
# Llistar totes les tasques programades amb la seva freqüència
php artisan schedule:list
# Provar una tasca programada manualment (sense esperar la seva hora)
php artisan schedule:test
# Executar el scheduler en mode continu (per a desenvolupament)
php artisan schedule:work
# Interrompre les tasques programades que s'estan executant
php artisan schedule:interruptLa comanda schedule:list és molt útil per verificar que totes les tasques programades estan registrades correctament i que les seves freqüències són les esperades. Mostra una taula amb el nom de cada tasca, la seva expressió cron, la pròxima execució programada i la descripció.
La comanda schedule:work és una alternativa per al desenvolupament local: en lloc de necessitar una entrada de cron, executa el scheduler en un bucle continu que comprova cada minut si hi ha tasques pendents. Això facilita provar les tasques programades sense configurar el cron del sistema.
Storage#
La comanda storage:link crea un enllaç simbòlic des del directori public/storage al directori storage/app/public. Això és necessari perquè els fitxers pujats pels usuaris que es guarden a storage/app/public siguin accessibles des del navegador. Sense aquest enllaç simbòlic, els fitxers existeixen al disc però no tenen una URL pública:
# Crear l'enllaç simbòlic public/storage -> storage/app/public
php artisan storage:linkAquesta comanda normalment només s'executa una vegada quan es configura un nou entorn (desenvolupament, staging, producció). L'enllaç simbòlic es manté fins que l'elimines manualment. Si fas servir un disc al núvol (com S3), no necessites l'enllaç simbòlic perquè els fitxers ja tenen URLs públiques pròpies.
Generació de claus#
La comanda key:generate genera una clau d'aplicació aleatòria i la guarda a la variable APP_KEY del fitxer .env. Aquesta clau s'utilitza per a totes les operacions d'encriptació de Laravel: la signatura de cookies, l'encriptació de valors amb la facade Crypt, la generació de tokens CSRF i molt més. Sense una clau d'aplicació vàlida, les sessions, les cookies i qualsevol dada encriptada no seran segures:
# Generar una nova clau d'aplicació
php artisan key:generate
# Mostrar la clau sense guardar-la al .env
php artisan key:generate --showAquesta comanda s'executa automàticament quan crees un projecte nou amb laravel new o composer create-project. Però si clones un repositori existent o desplegueu a un nou entorn, necessitaràs executar-la manualment. Mai comparteixis la clau d'aplicació entre entorns: cada entorn (desenvolupament, staging, producció) ha de tenir la seva pròpia clau.
Publicació de recursos de paquets (vendor:publish)#
Molts paquets de Laravel (tant oficials com de tercers) inclouen fitxers de configuració, migracions, vistes, traduccions i altres recursos que pots personalitzar. La comanda vendor:publish copia aquests fitxers al teu projecte perquè puguis modificar-los sense tocar el codi del paquet:
# Publicar els recursos d'un proveïdor específic
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
# Publicar només les configuracions d'un paquet
php artisan vendor:publish --tag=config
# Publicar les migracions d'un paquet
php artisan vendor:publish --tag=migrations
# Publicar les vistes d'un paquet
php artisan vendor:publish --tag=views
# Forçar la sobreescriptura de fitxers ja publicats
php artisan vendor:publish --provider="App\Providers\SomeProvider" --force
# Mode interactiu: selecciona quins recursos publicar d'una llista
php artisan vendor:publishQuan executes vendor:publish sense arguments, Laravel mostra una llista interactiva de tots els proveïdors i tags disponibles perquè puguis seleccionar quins recursos vols publicar. Això és molt convenient quan no recordes el nom exacte del service provider.
Encriptació de l'entorn#
Les comandes env:encrypt i env:decrypt permeten xifrar i desxifrar el fitxer .env. Això és útil per poder versionar el fitxer d'entorn al repositori de manera segura, ja que el fitxer encriptat (.env.encrypted) no es pot llegir sense la clau de xifrat. En equips grans o amb CI/CD, això simplifica la gestió de les variables d'entorn perquè tothom pot tenir accés al fitxer encriptat, però només les persones amb la clau poden desencriptar-lo:
# Encriptar el fitxer .env (genera .env.encrypted i una clau de xifrat)
php artisan env:encrypt
# Encriptar amb un entorn específic
php artisan env:encrypt --env=production
# Encriptar amb una clau específica
php artisan env:encrypt --key=base64:dGVzdC1rZXktMTIzNDU2Nzg5MDEyMzQ1Ng==
# Forçar la sobreescriptura d'un fitxer encriptat existent
php artisan env:encrypt --force
# Desencriptar el fitxer .env.encrypted
php artisan env:decrypt
# Desencriptar amb una clau específica
php artisan env:decrypt --key=base64:dGVzdC1rZXktMTIzNDU2Nzg5MDEyMzQ1Ng==
# Desencriptar un entorn específic
php artisan env:decrypt --env=production
# Desencriptar i forçar la sobreescriptura del fitxer .env existent
php artisan env:decrypt --forceEl flux típic és el següent: encriptes el fitxer .env amb env:encrypt, afegeixes el fitxer .env.encrypted al repositori, i guardes la clau de xifrat en un lloc segur (com els secrets de GitHub Actions o les variables d'entorn del servidor de CI). Quan desplegueu a un nou entorn, executeu env:decrypt amb la clau per restaurar el fitxer .env.
Altres comandes útils#
Hi ha algunes comandes addicionals que no encaixen en cap de les categories anteriors però que són útils en situacions específiques:
# Netejar les classes compilades i la cache de serveis
php artisan clear-compiled
# Publicar els stubs que Laravel utilitza per generar codi amb make:*
# Això et permet personalitzar les plantilles de generació
php artisan stub:publish
# Llistar tots els events i els seus listeners registrats
php artisan event:list
# Crear les taules per a sessions i cache a la base de dades
php artisan session:table
php artisan make:cache-table
# Instal·lar el middleware d'API i publicar el fitxer de rutes api.php
php artisan install:api
# Instal·lar el sistema de broadcasting
php artisan install:broadcastingLa comanda stub:publish mereix una menció especial. Quan executes una comanda make:*, Laravel utilitza fitxers de plantilla interns (stubs) per generar el codi. Si vols que tots els models, controladors o altres components generats tinguin una estructura diferent de la que Laravel proporciona per defecte (per exemple, afegir un comentari de copyright, un trait comú o una propietat estàndard), pots publicar els stubs al directori stubs/ del teu projecte i modificar-los. A partir d'aquell moment, les comandes make:* utilitzaran els teus stubs personalitzats en lloc dels originals.