dougkusanagi / laravel-lan-share
Share Laravel development environments running in WSL over the local network.
Requires
- php: ^8.3
- bacon/bacon-qr-code: ^3.0
- illuminate/console: ^13.0
- illuminate/http: ^13.0
- illuminate/process: ^13.0
- illuminate/routing: ^13.0
- illuminate/support: ^13.0
Requires (Dev)
- larastan/larastan: ^3.0
- orchestra/testbench: ^11.0
- pestphp/pest: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
README
Compartilha um ambiente Laravel/Vite executado no WSL com outros dispositivos da rede local.
Uso recomendado
php artisan lan:install php artisan lan:share
lan:install instala ou atualiza antecipadamente os scripts do agente em %LOCALAPPDATA%. Se o agente estiver ausente ou desatualizado, lan:share oferece a instalação automaticamente antes de continuar. Em automações ou terminais não interativos, use php artisan lan:share --install.
Durante a instalação, o pacote cria vite.lan.config.ts como um wrapper do vite.config.ts do projeto. Esse wrapper mantém os plugins existentes e usa VITE_DEV_ORIGIN para anunciar ao Laravel o endereço LAN do Vite, enquanto o servidor continua escutando em 0.0.0.0. Se o projeto já usa vite.config.lan.ts, esse arquivo é mantido e usado automaticamente.
Depois da instalação, lan:share inicia o agente Windows, solicita a confirmação do UAC, configura portproxy/Firewall e envia heartbeats enquanto Laravel e Vite estiverem rodando. A instalação fica fora do caminho crítico das inicializações seguintes.
O QR Code da URL da aplicação é exibido por padrão para abrir o projeto no celular. Para ocultá-lo em uma execução:
php artisan lan:share --no-qr
O terminal também mostra a disponibilidade na rede, uma URL wa.me clicável e uma página local em /__lan-share com QR Code, copiar, compartilhamento nativo (quando disponível) e WhatsApp. Use --no-share-links para ocultar esses links.
Uma nova execução também encerra automaticamente processos antigos do LAN Share pertencentes ao mesmo projeto. Use --no-replace somente quando quiser preservar uma execução paralela.
php artisan lan:agent status php artisan lan:agent doctor php artisan lan:share:cleanup php artisan lan:uninstall
Os ciclos de vida são independentes: lan:share:cleanup remove somente sessões, regras de Firewall e portproxy; lan:uninstall encerra sessões remanescentes com segurança e remove somente o runtime versionado do agente.
O agente expira leases abandonados e remove os recursos associados ao projeto quando o processo termina inesperadamente. Para forçar o fluxo compatível baseado em script:
php artisan lan:share --legacy php artisan lan:share:cleanup --legacy
Para desativar o agente por configuração:
LAN_SHARE_AGENT=false LAN_SHARE_QR=false LAN_SHARE_REPLACE_EXISTING=false
O agente atual é PowerShell por ser o caminho sem compilação adicional no MVP. O protocolo JSON/Named Pipe foi mantido independente para permitir uma futura implementação em .NET sem alterar os comandos Artisan.
Implementações futuras
As propostas abaixo ainda não estão disponíveis e possuem documentos próprios para manter este README focado no uso atual: