docs: corrige configuração do Deno Deploy

- Atualiza landing/README.md com configuração correta do Deno Deploy
- Adiciona DENO_DEPLOY_FIX.md com troubleshooting detalhado
- Explica que 'deno install' não existe e deve ser removido
- Documenta valores corretos: Install command (vazio), Build Directory (landing)
- Adiciona tabela comparativa Deno vs npm/yarn
- Inclui workflow GitHub Actions opcional para CI/CD
- Corrige erro: 'Executing install command - build failed'
This commit is contained in:
Tiago Yamamoto 2025-12-11 20:09:24 -03:00
parent e6d5bef07a
commit 92509d5155
2 changed files with 187 additions and 11 deletions

102
landing/DENO_DEPLOY_FIX.md Normal file
View file

@ -0,0 +1,102 @@
# ⚠️ Erro Comum - Deno Deploy
## Problema
```
❌ Executing install command
Your build has failed to complete this step.
```
## Causa
O campo **Install command** está configurado com `deno install`, mas **esse comando não existe no Deno**!
## ✅ Solução
No painel do Deno Deploy (https://dash.deno.com):
1. Vá em **Settings** → **App Configuration**
2. Localize **Install command**
3. **APAGUE** o conteúdo (deixe vazio)
4. OU coloque: `deno cache main.ts` (opcional)
### Configuração Correta
![image](uploaded_image_1_1765494346049.png)
**Valores que devem estar configurados:**
```
Build Directory: landing
Install command: (vazio ou "deno cache main.ts")
Build command: deno task build
Pre-deploy command: (vazio)
Entrypoint: main.ts
```
### Por Que Isso Acontece?
O Deno **não precisa** de `npm install` ou `yarn install`. Ele gerencia dependências automaticamente através do arquivo `deno.json` usando **import maps**.
Quando você faz o primeiro `deno run` ou `deno task build`, o Deno:
1. Lê os imports em `deno.json`
2. Baixa as dependências automaticamente
3. Cacheia para uso futuro
### Comandos Deno vs npm/yarn
| npm/yarn | Deno |
|----------|------|
| `npm install` | ❌ Não existe |
| `npm run build` | `deno task build` |
| `npm start` | `deno task start` |
| `package.json` | `deno.json` |
| `node_modules/` | Cache global do Deno |
### Troubleshooting
**Se ainda der erro** após limpar o Install command:
1. **Verifique o Build Directory**:
- Deve ser `landing` (sem `\`)
- ❌ Errado: `\landing`
- ✅ Certo: `landing`
2. **Verifique o Entrypoint**:
- Para produção: `main.ts`
- Para dev: `dev.ts`
3. **Limpe o cache do Deno Deploy**:
```bash
# Na sua máquina
cd landing
rm -rf _fresh/
deno task build
git add .
git commit -m "rebuild fresh assets"
git push
```
4. **Redesploy manual**:
- Settings → Deployments → Redeploy latest
### Logs de Sucesso
Quando configurado corretamente, você deve ver:
```
✅ Cloning repository...
✅ Build directory: landing
✅ Running: deno task build
Task build deno run -A dev.ts build
The manifest has been generated for 5 routes and 2 islands.
Assets written to: _fresh/
✅ Deploying...
✅ Deployment successful!
```
## Mais Informações
- [Deno Deploy Docs](https://deno.com/deploy/docs)
- [Fresh Deploy Guide](https://fresh.deno.dev/docs/concepts/deployment)
- [Deno Task Runner](https://deno.land/manual/tools/task_runner)

View file

@ -209,19 +209,93 @@ deno fmt
### Deno Deploy (Recomendado)
**Via GitHub (automático)**:
**⚠️ IMPORTANTE - Configuração Correta:**
No painel do Deno Deploy, configure:
| Campo | Valor Correto | ❌ Valor Incorreto |
|-------|---------------|-------------------|
| **Build Directory** | `landing` | `\landing` |
| **Install command** | *(deixe vazio)* | ~~`deno install`~~ |
| **Build command** | `deno task build` | ✅ |
| **Entrypoint** | `main.ts` | ✅ |
**Por que deixar Install command vazio?**
O Deno **não precisa** de comando install! Ele baixa dependências automaticamente via `deno.json` (import maps). O comando `deno install` não existe e causa erro:
```
❌ Executing install command
deno install
Error: Command not found
```
**Configuração Detalhada:**
1. **Via GitHub (automático)**:
```
1. Push para GitHub
2. Conecte repo em https://dash.deno.com
3. Fresh é detectado automaticamente
3. Configure:
- Framework: Fresh
- Build Directory: landing
- Install command: (DEIXE VAZIO!)
- Build command: deno task build
- Root Directory: / (se o repo inteiro)
4. Deploy feito em cada push
```
**Via CLI**:
2. **Via CLI**:
```bash
# Instalar CLI
deno install -Arf https://deno.land/x/deploy/deployctl.ts
deno install -Arf --global https://deno.land/x/deploy/deployctl.ts
# Deploy
deployctl deploy --project=seu-projeto dev.ts
# Deploy direto
cd landing
deployctl deploy --project=seu-projeto main.ts
```
**Arquivo de configuração (opcional)**:
Crie `landing/.github/workflows/deploy.yml`:
```yaml
name: Deploy to Deno Deploy
on:
push:
branches: [main]
paths:
- 'landing/**'
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Build
run: |
cd landing
deno task build
- name: Deploy to Deno Deploy
uses: denoland/deployctl@v1
with:
project: seu-projeto
entrypoint: landing/main.ts
root: landing
```
### Docker (Self-Hosted)