# Javascript

## 📁 **Preparando os Arquivos**

Antes de fazer upload do seu projeto, você deve **excluir arquivos desnecessários** para otimizar o deploy.

#### ❌ **Arquivos a Excluir**

Certifique-se de que os seguintes arquivos e diretórios **não** sejam incluídos no seu [`.zip`](https://docs.discloud.com/faq/general-questions/em-andamento-como-comprimir):

```diff
- package-lock.json
- node_modules/
- .cache/
- .git/
```

📌 **Use um arquivo** [**`.discloudignore`**](https://docs.discloud.com/configurations/.discloudignore) **para excluir automaticamente esses arquivos.**

🔗 **Precisa de ajuda para configurar seu** [**`package.json`**](https://docs.discloud.com/development-environment/supported-languages/javascript/package-json) **ou encontrar o** [**arquivo principal**](https://docs.discloud.com/faq/general-questions/what-is-the-main-file)**?**

<details>

<summary>📦 Sobre a pasta dist (apenas TYPE=site)</summary>

{% hint style="info" %}
Para apps `TYPE=site`, **`dist/` é reservada** para a saída do `BUILD`. Se você define `BUILD=...` no [`discloud.config`](https://github.com/discloud/docs/blob/portuguese/configurations/discloud.config), nós geramos a pasta `dist/` pra você. **Não compacte `dist/`** ou envie arquivos para lá.
{% endhint %}

**⚙️ Build automático**

1. `BUILD` no `discloud.config` (ex.: `BUILD=npm run build`).
2. Script gera arquivos em `dist/` (Vite, Vue, etc. já fazem isso).
3. Rodamos `BUILD` antes do `START` e servimos `dist/`.

Exemplo:

```properties
TYPE=site
MAIN=server/index.js
BUILD=npm run build
START=npm run start
RAM=512
VERSION=latest
ID=meusite
```

**👜 Pré-build**

1. Gere a saída em **`build/`** (não use `dist/`).
2. Omitir `BUILD` no `discloud.config`.
3. Aponte `MAIN` para a pasta `build/`.

Exemplo:

```properties
TYPE=site
MAIN=build/server.js
RAM=512
VERSION=latest
ID=meusite
```

</details>

***

### 🌐 **Hospedando Websites e APIs com Express**

Antes de fazer deploy do seu website ou API na Discloud, certifique-se de que você atenda aos seguintes **requisitos**:

{% hint style="success" %}
[Plano Platinum ou superior](https://discloud.com/plans) é necessário para hospedar websites ou APIs.
{% endhint %}

{% hint style="success" %}
[Um subdomínio deve ser criado](https://docs.discloud.com/faq/general-questions/how-to-create-a-subdomain) antes do deploy.
{% endhint %}

{% hint style="danger" %}
Porta `8080` é obrigatória – As aplicações devem escutar nesta porta.
{% endhint %}

### ⚙️ **Configurando Express**

```javascript
const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("Olá, Discloud!");
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => console.log(`Servidor rodando na porta ${PORT}`));
```

***

## ✍️ Fazendo Deploy **da Sua Aplicação**

Uma vez que seu projeto esteja **configurado e comprimido**, você pode escolher um dos seguintes **métodos de deploy** na Discloud:

<table data-card-size="large" data-view="cards"><thead><tr><th data-card-target data-type="content-ref"></th><th align="center"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="../../how-to-host-using/dashboard">dashboard</a></td><td align="center">Faça upload e gerencie sua aplicação via interface web.</td><td></td><td></td><td></td></tr><tr><td><a href="../../how-to-host-using/discord-bot">discord-bot</a></td><td align="center">Faça deploy diretamente através dos comandos do bot Discord da Discloud.</td><td></td><td></td><td></td></tr><tr><td><a href="../../how-to-host-using/visual-studio-code">visual-studio-code</a></td><td align="center">Integre com VS Code para gerenciamento contínuo de projetos.</td><td></td><td></td><td></td></tr><tr><td><a href="../../how-to-host-using/cli">cli</a></td><td align="center">Use a interface de linha de comando para deploy rápido e eficiente.</td><td></td><td></td><td></td></tr></tbody></table>
