Faça deploy de uma SPA (Single Page Application) com Vite e React na Veloz.
Pré-requisitos
- Node.js 18+ instalado
- Um projeto Vite + React (ou vamos criar um)
1. Criar o projeto
npm create vite@latest meu-app -- --template react-ts
cd meu-app
npm install2. Instalar a CLI
npm install -g onveloz
veloz login3. Deploy
veloz deployℹ Framework detectado: Vite + React
ℹ Tipo: Site Estático
ℹ Build: npm run build
ℹ Output: dist
? Confirmar e fazer deploy? (Y/n)
A Veloz detecta Vite + React como site estático e serve os arquivos da pasta dist diretamente.
✓ Build concluído em 8s
✓ Deploy concluído!
✓ https://meu-app.onveloz.com
SPA Routing
Se seu app usa React Router (ou qualquer client-side routing), a Veloz redireciona automaticamente todas as rotas para index.html — não precisa configurar nada.
// App.tsx
import { BrowserRouter, Routes, Route } from "react-router-dom";
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/dashboard/*" element={<Dashboard />} />
</Routes>
</BrowserRouter>
);
}Todas as rotas (/about, /dashboard/settings, etc.) funcionam sem 404.
Variáveis de ambiente
Vite usa o prefixo VITE_ para variáveis acessíveis no client:
veloz env set VITE_API_URL=https://api.meuapp.com
veloz env set VITE_STRIPE_KEY=pk_live_...Importante: Variáveis
VITE_*são injetadas no build. Após alterar, faça um novo deploy.
// No código
const apiUrl = import.meta.env.VITE_API_URL;Proxy de API
Se seu frontend precisa se comunicar com uma API, configure o proxy no vite.config.ts para desenvolvimento local:
// vite.config.ts
export default defineConfig({
plugins: [react()],
server: {
proxy: {
"/api": "http://localhost:8080",
},
},
});Em produção, aponte VITE_API_URL para a URL real da API.
Build output
Por padrão, Vite gera os arquivos em dist/:
dist/
├── index.html
├── assets/
│ ├── index-abc123.js
│ └── index-def456.css
└── favicon.ico
Se você alterou o outDir no vite.config.ts, atualize no veloz.json:
{
"services": {
".": {
"build": {
"outputDir": "build"
}
}
}
}Com Tailwind CSS
Funciona sem configuração extra. O build do Vite já processa o Tailwind:
npm install -D tailwindcss @tailwindcss/vite// vite.config.ts
import tailwindcss from "@tailwindcss/vite";
export default defineConfig({
plugins: [react(), tailwindcss()],
});Monorepo
Se seu Vite + React faz parte de um monorepo:
meu-projeto/
├── apps/
│ ├── web/ ← Vite + React
│ └── api/ ← Backend
└── packages/
└── ui/ ← Componentes compartilhados
cd meu-projeto
veloz deploy
# Selecione "web" na lista de appsPróximos passos
- Deploy Hono API — Backend para acompanhar seu frontend
- Domínios — Configurar domínio personalizado
- CI/CD — Deploy automático no push