Um servidor de desenvolvimento hot-reload moderno e leve, construído com TypeScript e zero dependências externas.
- 🚀 Hot Reload Inteligente: CSS injection sem recarregar página + full reload para outros arquivos
- 📜 SPA Support: Flag
--spapara aplicações React/Vue/Angular - 📁 MIME Types Robustos: Suporte completo para vídeos, fontes, manifestos e mais
- 🌐 CORS Habilitado: Acesso cross-origin para desenvolvimento
- 🔒 HTTPS Support: Modo HTTPS com certificados auto-assinados
- ⚡ Deploy Interativo: Comando
deploycom Nginx + Certbot + PM2 configurados automaticamente - 📡 Server-Sent Events: Notificações em tempo real eficientes
- 🔍 Logs Detalhados: Visualização de arquivos servidos e recursos HTML
- 🔓🔒 Indicadores Visuais: Emojis de cadeado no terminal (aberto/fechado)
npm install -g one-server-4-all
# ou
bun install -g one-server-4-allO one-server-4-all suporta HTTPS com certificados auto-assinados para desenvolvimento local.
# Via linha de comando
one-server-4-all --https=true
# Via npm scripts
npm run dev:https
# Via bun
bun run dev:https# Gerar certificados auto-assinados
npm run certs:generate
# Ver informações dos certificados
npm run certs:info
# Limpar certificados existentes
npm run certs:cleanNota: Os certificados são salvos em .one-server-4-all-certs/ no diretório do projeto.
# Na pasta do seu projeto
one-server-4-all
# Com opções
one-server-4-all --port=3000 --spa=trueQuando você modifica arquivos .css, apenas o estilo é atualizado sem recarregar a página inteira.
one-server-4-all --spa=trueRotas inexistentes (como /usuarios/1) automaticamente servem index.html, permitindo que seu framework frontend assuma o roteamento.
- Vídeos: MP4, WebM, OGG, AVI, MOV, WMV, FLV
- Áudios: MP3, WAV, OGG, AAC, M4A, Opus
- Fontes: WOFF, WOFF2, TTF, OTF, EOT
- Imagens: PNG, JPG, GIF, SVG, WebP, BMP, TIFF
- Documentos: PDF, CSV, YAML, TOML, TXT, MD
- Web: JSON, XML, Manifest, WASM
O comando deploy oferece um wizard interativo para configurar projetos em produção com Nginx + Certbot SSL + PM2 automaticamente.
npx vai-server deploy
# ou
one-server-4-all deploy- Pergunta o domínio/subdomínio (ex:
app.meusite.com) - Pergunta a porta (padrão: 7000)
- Configura o Nginx com proxy reverso e suporte a WebSocket
- Executa o Certbot para gerar certificados SSL gratuitos (Let's Encrypt)
- Gera o comando PM2 pronto para execução
🚀 one-server-4-all DEPLOYER v0.4.0
─────────────────────────────────────────
➜ Qual o domínio/subdomínio? (ex: app.meusite.com)
❯ api.meusite.com
➜ Qual a porta do servidor? (padrão 7000)
❯ 7001
➜ Deseja configurar Nginx + SSL (Certbot) agora? (s/n)
❯ s
📦 Configuração Final:
────────────────────────
Dominio: api.meusite.com
Porta: 7001
SSL: Configurado via Certbot
PM2: pm2 start "npx vai-server --port=7001 --open=false" --name "api.meusite.com"
────────────────────────
✨ Deploy concluído com sucesso!
Usuário → HTTPS (Nginx:443 com Certbot) → HTTP (vai-server:porta)
O Nginx faz a terminação SSL e repassa para o servidor em HTTP simples, eliminando a necessidade de configurar certificados no Node.js.
| Opção | Descrição | Padrão |
|---|---|---|
--port=<number> |
Porta do servidor | 9999 |
--root=<path> |
Diretório raiz | . (diretório atual) |
--open=<true/false> |
Abrir navegador automaticamente | true |
--spa=<true/false> |
Habilitar suporte SPA | false |
--https=<true/false> |
Habilitar modo HTTPS | false |
Este projeto foi desenvolvido seguindo uma arquitetura minimalista e moderna:
- TypeScript Estrito: Tipagem forte em todo o código
- APIs Nativas: Uso exclusivo de módulos
node:* - Server-Sent Events: Comunicação bidirecional eficiente
- File System Watch: Monitoramento recursivo de mudanças
- Mini-Zod: Validação type-safe sem dependências
- CSS Injection: DOM manipulation para hot reload inteligente
src/
├── index.ts # CLI e configuração
├── server.ts # Servidor HTTP e lógica principal
├── watcher.ts # Monitoramento de arquivos
└── validator.ts # Validação type-safe
- Watcher monitora mudanças recursivamente usando
fs.watch - Server serve arquivos estáticos com MIME types corretos
- SSE notifica clientes sobre mudanças em tempo real
- CSS Injection atualiza estilos sem recarregar página
- SPA Fallback redireciona 404 para index.html quando habilitado
- Inicie o servidor:
one-server-4-all - Modifique qualquer arquivo
.css - Observe que apenas o CSS é atualizado, sem reload da página
- Inicie com SPA:
one-server-4-all --spa=true - Acesse
/qualquer-rota-inexistente - Deve carregar
index.htmlem vez de 404
- Adicione arquivos de vídeo/fonte no seu projeto
- Eles serão servidos com headers corretos
- Acesse arquivos de outro domínio/origin
- Deve funcionar sem erros de CORS
- Execute:
one-server-4-all --https=true - Observe o emoji 🔒 no log do terminal
- Acesse https://localhost:9999
- Aceite o aviso de certificado auto-assinado
- Abra uma página HTML
- Observe no terminal:
- 📄 Arquivos servidos com tamanho e tipo MIME
- 🔍 Recursos encontrados no HTML (CSS, JS, imagens)
- 🌐 Confirmação de injeção do hot-reload
| Feature | Live Server | Purecore one-server-4-all |
|---|---|---|
| Dependencies | Múltiplas | ❌ Zero |
| Language | JavaScript | ✅ TypeScript |
| CSS Injection | ✅ Sim | ✅ Sim |
| SPA Support | ✅ Sim | ✅ Sim |
| MIME Types | Básicos | ✅ Robustos |
| CORS | ❌ Não | ✅ Sim |
| Installation | Lento | ✅ Instantâneo |
Durante o desenvolvimento, analisamos dependências comuns em servidores de desenvolvimento e identificamos quais são desnecessárias no Node.js moderno:
object-assign: Substituído porObject.assign()nativohttp-auth: Autenticação HTTP pode ser feita nativamentecolors: Node.js 20+ temutil.styleText()nativoopn:child_processnativo abre URLs/arquivosevent-stream:⚠️ Vulnerabilidade conhecida, usar streams nativos
- File System:
node:fscomfs.watch()recursivo - HTTP Server:
node:httpenode:httpsnativos - Crypto:
node:cryptopara certificados HTTPS - Path/URL:
node:pathenode:urlpara manipulação - Streams:
node:streampara Server-Sent Events
Zero dependências externas = instalação instantânea, sem vulnerabilidades de terceiros, e compatibilidade garantida com futuras versões do Node.js.
Veja todas as mudanças em CHANGELOG.md
Contribuições são bem-vindas! Este projeto segue uma filosofia de zero dependencies e simplicidade arquitetural.
MIT
