Laravel Extensions en Zed: Productividad sin Abandonar tu Editor
Laravel Extensions en Zed: Productividad sin Abandonar tu Editor
Si eres desarrollador Laravel y aún no conoces Zed, es hora de que lo conozcas. Y si ya lo usas, probablemente te has preguntado cómo obtener la misma experiencia de desarrollo enriquecida que tenías en VS Code o PhpStorm. La respuesta llegó con las extensiones comunitarias de Laravel para Zed, que transforman este editor ultrarrápido en un entorno de desarrollo profesional para aplicaciones Laravel.
En este artículo te mostraré cómo configurar estas extensiones, qué capacidades te ofrecen y cómo integrarlas en tu flujo de trabajo diario.
¿Por qué Zed es diferente?
Zed es un editor de código moderno, escrito en Rust, que prioriza la velocidad y la experiencia del usuario. A diferencia de VS Code, que es Electron (más pesado), Zed es extremadamente ligero y se siente responsivo incluso en máquinas con recursos limitados.
Sin embargo, Zed llegó relativamente hace poco al mercado, lo que significa que su ecosistema de extensiones está en crecimiento. Aquí es donde entra en juego la extensión Laravel comunitaria, que fue desarrollada por la comunidad para nivelar el campo.
Instalación de la extensión Laravel en Zed
El proceso es sencillo. Abre Zed y accede al gestor de extensiones:
# En Zed, presiona Ctrl+Shift+X (Windows/Linux) o Cmd+Shift+X (Mac)
# Busca "Laravel"
Una vez que la encuentres, haz clic en “Install”. Zed descargará automáticamente la extensión y la activará.
Si prefieres hacerlo manualmente, puedes editar tu archivo de configuración de Zed (~/.config/zed/settings.json):
{
"extensions": {
"laravel": {}
}
}
Características principales de la extensión Laravel
La extensión Laravel para Zed proporciona análisis estático de tu proyecto a través de LSP (Language Server Protocol). Esto significa que funciona analizando tu código sin ejecutarlo, lo que la hace súper rápida.
Go-to-Definition
Una de las características más poderosas es la capacidad de saltar a la definición de cualquier clase, método o función:
// En tu controlador
namespace App\Http\Controllers;
use App\Models\User; // Presiona Cmd/Ctrl + Click para ir a User.php
class UserController extends Controller
{
public function show(User $user)
{
return view('users.show', ['user' => $user]);
}
}
Esto funciona incluso con resolución dinámica de servicios en el contenedor:
// En tu clase de servicio
class PaymentService
{
public function process(Order $order)
{
// Puedes ir a Order.php con go-to-definition
}
}
Hover Cards con información contextual
Cuando pasas el ratón sobre una clase o función, Zed muestra información contextual:
public function store(StoreUserRequest $request)
{
// Al pasar el ratón sobre StoreUserRequest, verás:
// - La ruta del archivo
// - Los métodos validados
// - La documentación si existe
}
Find References
Encuentra todas las referencias a una clase, método o propiedad en tu proyecto:
class User extends Model
{
// Presiona Cmd/Ctrl + Shift + F para encontrar referencias
protected $fillable = ['name', 'email'];
}
// La extensión encontrará:
// - App\Http\Controllers\UserController (línea 15)
// - App\Http\Requests\StoreUserRequest (línea 8)
// - tests/Feature/UserTest.php (línea 42)
Esta funcionalidad es invaluable cuando necesitas hacer refactoring.
Rename (Refactoring)
Renombra variables, métodos o clases en todo tu proyecto de una sola vez:
// Selecciona "User" y presiona Cmd/Ctrl + Shift + R
class User extends Model { } // Se renombra aquí
// Se renombra automáticamente en todos los archivos
public function getUserById($id) { } // Y aquí
Tooling para Blade
La extensión también proporciona soporte mejorado para Blade, el motor de plantillas de Laravel:
<!-- Syntax highlighting mejorado -->
<x-layout>
@foreach($users as $user)
<div>{{ $user->name }}</div>
@endforeach
</x-layout>
Obtendrás resaltado de sintaxis correcto, autocompletado para directivas Blade y validación básica.
Configuración avanzada
Aunque la extensión funciona bien con la configuración por defecto, puedes personalizarla según tus necesidades:
{
"lsp": {
"laravel": {
"settings": {
// Opciones específicas de la extensión
"inlayHints": {
"enabled": true
}
}
}
}
}
Casos de uso prácticos
Exploración rápida de modelos Eloquent
Cuando trabajas con relaciones complejas:
class Post extends Model
{
public function author()
{
// Go-to-definition te lleva instantáneamente a User.php
return $this->belongsTo(User::class);
}
public function comments()
{
// Y aquí a Comment.php
return $this->hasMany(Comment::class);
}
}
Validación de requests personalizadas
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
];
}
}
// En tu controlador, cuando usas StoreUserRequest,
// la extensión puede mostrarte qué datos validados espera
public function store(StoreUserRequest $request)
{
$validated = $request->validated(); // LSP sabe qué array retorna
}
Refactoring seguro de controladores
Si necesitas renombrar un método de controlador que es usado en rutas:
// routes/web.php
Route::get('/users/{user}', [UserController::class, 'show']);
// En UserController.php, renombra 'show' a 'display'
// La extensión lo actualiza automáticamente en las rutas también
Limitaciones a conocer
Aunque la extensión es poderosa, hay algunas limitaciones importantes:
- No ejecuta código PHP: Es análisis estático, así que no puede detectar problemas que requieran ejecución
- Dependencias externas: Si tu proyecto tiene dependencias complejas no instaladas, algunos features pueden no funcionar perfectamente
- Blade avanzado: El soporte para Blade es básico; macros complejos podrían no parsearse correctamente
Comparativa con otras herramientas
VS Code + Intelephense
VS Code sigue siendo la opción más robusta con Intelephense, pero consume más recursos y es más lento.
PhpStorm
PhpStorm es más poderoso pero es un IDE completo y pesado. Zed es más ligero e ideal si prefieres un editor minimalista.
Vim/Neovim
Puedes configurar Vim con LSP, pero la curva de aprendizaje es más pronunciada. Zed ofrece la misma funcionalidad con una interfaz amigable.
Optimización del rendimiento
Si experimentas lentitud con la extensión, prueba estas optimizaciones:
{
"lsp": {
"laravel": {
"initialization_options": {
"indexing": {
"enabled": true,
"excludePaths": [
"node_modules",
"vendor",
".git",
"storage"
]
}
}
}
}
}
Excluir directorios grandes acelera significativamente el análisis.
Contribuciones a la comunidad
La extensión es open source, así que si encuentras bugs o tienes ideas de mejora, puedes contribuir:
git clone https://github.com/laravel-community/laravel-zed-extension.git
cd laravel-zed-extension
# Revisa el README para instrucciones de desarrollo
Las contribuciones son bienvenidas, especialmente para mejorar el soporte de Blade y validación de migraciones.
Flujo de trabajo recomendado
Mi recomendación personal para maximizar productividad:
- Abre tu proyecto Laravel en Zed
- Usa Ctrl+P para navegación rápida de archivos
- Usa Go-to-Definition para explorar la estructura
- Usa Find References antes de refactorizar
- Usa Rename para cambios seguros
Este flujo es rápido, seguro y muy eficiente.
Conclusión
La extensión Laravel para Zed es una herramienta excelente que democratiza la experiencia de desarrollo de alta calidad en un editor rápido y minimalista. No es tan poderosa como PhpStorm, pero para la mayoría de proyectos Laravel, es más que suficiente y mucho más rápida.
Si aún no la has probado, te recomiendo que le des una oportunidad. El tiempo que ahhorres en navegación y refactoring valdrá la pena.
Puntos clave
- Zed es un editor ultrarrápido escrito en Rust que complementa bien con Laravel
- La extensión Laravel comunitaria proporciona análisis estático sin ejecutar código
- Go-to-Definition funciona incluso con resolución dinámica del contenedor
- Find References es invaluable para refactoring seguro en proyectos grandes
- Rename automatiza cambios en todo el proyecto sin romper nada
- El soporte de Blade es básico pero mejora constantemente
- Puedes excluir directorios para optimizar el rendimiento en proyectos grandes
- Es open source, así que puedes contribuir mejoras
- Funciona mejor para proyectos medianos que para arquitecturas muy complejas