En octubre de 2024, Laravel anunció oficialmente que estaba trabajando en una extensión para Visual Studio Code. Desde entonces, muchos nos quedamos a la expectativa de cuándo la veríamos en acción y qué características traería bajo el brazo. ¡La espera ha terminado! El 16 de diciembre de 2024, el equipo de Laravel publicó la primera versión Beta de esta extensión en el Marketplace de VS Code.
¿Dónde conseguirla y qué ofrece?
La extensión ya está disponible de forma pública en el Visual Studio Marketplace. Puedes instalarla directamente desde Visual Studio Code abriendo la pestaña de extensiones (o con el atajo Ctrl + Shift + X
/ Cmd + Shift + X
en macOS) y buscando Laravel
.
Aunque se encuentra en versión Beta, la extensión promete un conjunto de funcionalidades que simplifican el desarrollo en Laravel, tales como:
Resaltado inteligente (intellisense) para Blade y archivos de configuración.
Autocompletado de directivas y funciones específicas de Laravel.
Navegación rápida a rutas, controladores y archivos Blade.
Snippets para facilitar la creación de componentes, directivas y estructuras típicas de Laravel.
Integración con Artisan para ejecutar comandos sin salir del editor.
Adiós a la multiplicidad de extensiones
Hasta ahora, la comunidad se apoyaba en diferentes extensiones separadas para Blade, para Artisan, para autocompletado de rutas, etc. Esta iniciativa unifica las necesidades más comunes de un desarrollador Laravel en un solo paquete, garantizando una experiencia más coherente y (al menos en teoría) con menos conflictos de configuración.
Características
Una lista no exhaustiva de las funcionalidades cubiertas por la extensión:
App Bindings
Ejemplos:
app('auth') App::make('auth.driver') app()->make('auth.driver') App::bound('auth.driver') App::isShared('auth.driver')
Autocompletado
Enlaces directos a los bindings
Advertencias si el binding no se encuentra
Información al pasar el ratón (hover)
Assets
Ejemplo:
asset('my-amazing-jpeg.png')
Autocompletado
Enlaces directos al recurso
Advertencias si el recurso no se encuentra
Blade
Resaltado de sintaxis
Config
Ejemplos:
config('broadcasting.connections.reverb.app_id'); Config::get('broadcasting.connections.reverb.app_id'); Config::getMany([ 'broadcasting.connections.reverb.app_id', 'broadcasting.connections.reverb.driver', ]); config()->string('broadcasting.connections.reverb.app_id');
Autocompletado
Enlaces directos al valor de configuración
Advertencias si la configuración no se encuentra
Información al pasar el ratón (hover)
Eloquent
Autocompletado de métodos
Autocompletado de campos (e.g., métodos
where
,create
,make
, creación de objetos)Autocompletado de relaciones (e.g., métodos
with
y claves de arrays)Autocompletado en subconsultas (e.g.,
with
con claves de arrays y valores como closure)
Env
Ejemplos:
env('REVERB_APP_ID'); Env::get('REVERB_APP_ID');
Autocompletado
Enlaces directos al valor en
.env
Advertencias si el valor no se encuentra, con soluciones rápidas:
Añadir al archivo
.env
Copiar valor desde
.env.example
Información al pasar el ratón (hover)
Inertia
Ejemplos:
inertia('Pages/Dashboard'); Inertia::render('Pages/Dashboard'); Route::inertia('/dashboard', 'Pages/Dashboard');
Autocompletado
Enlaces directos a la vista en JavaScript
Advertencias si la vista no se encuentra, con soluciones rápidas:
Crear vista
Información al pasar el ratón (hover)
Route
Ejemplos:
route('dashboard'); signedRoute('dashboard'); Redirect::route('dashboard'); Redirect::signedRoute('dashboard'); URL::route('dashboard'); URL::signedRoute('dashboard'); Route::middleware('auth'); redirect()->route('dashboard');
Autocompletado
Enlaces directos a la definición de la ruta
Advertencias si la ruta no se encuentra
Información al pasar el ratón (hover)
Middleware
Ejemplos:
Route::middleware('auth'); Route::middleware(['auth', 'web']); Route::withoutMiddleware('auth');
Autocompletado
Enlaces directos al middleware correspondiente
Advertencias si el middleware no se encuentra
Información al pasar el ratón (hover)
Traducciones
Ejemplos:
trans('auth.failed'); __('auth.failed'); Lang::has('auth.failed'); Lang::get('auth.failed');
Autocompletado
Enlaces directos a las traducciones
Advertencias si la traducción no se encuentra
Información al pasar el ratón (hover)
Autocompletado de parámetros
Validación
Ejemplos:
Validator::validate($input, ['name' => 'required']); request()->validate(['name' => 'required']); request()->sometimes(['name' => 'required']);
Autocompletado para cadenas y arrays (excepto combinaciones con
|
por ahora)
Views
Ejemplos:
view('dashboard'); Route::view('/', 'home');
Autocompletado
Enlaces directos a las vistas Blade
Advertencias si la vista no se encuentra, con soluciones rápidas:
Crear vista
Información al pasar el ratón (hover)
Próximamente
Integración con el ejecutor de pruebas de VS Code.
Soporte para Livewire.
Soporte para Volt.
Soporte para Pint.
Mejoras en el autocompletado, enlaces, información al pasar el ratón y diagnósticos en archivos Blade.
Disponibilidad de LSP
El enfoque actual está en crear la mejor experiencia para desarrolladores Laravel en VS Code. Aunque no se descarta la posibilidad de portar esta funcionalidad a un LSP (Language Server Protocol) en el futuro, por ahora no está en la hoja de ruta inmediata.
Conclusión
La llegada de esta extensión oficial es un paso importante para quienes desarrollan con Laravel en Visual Studio Code. Con una sola instalación, se podrá tener acceso a un ecosistema unificado de herramientas y ayudas contextuales, sin necesidad de combinar múltiples extensiones de terceros. Si aún no la has probado, te animo a que instales la versión Beta, explores sus funcionalidades y compartas tu experiencia con la comunidad.
Con esto, quedamos a la espera de futuras actualizaciones y el anuncio de la versión estable. Mientras tanto, esta versión Beta ya supone una excelente noticia para el día a día de cualquier desarrollador Laravel.