# CLI

Host accepte la CLI Vercel officielle, version 63. Cette page décrit les commandes prises en charge, leurs options et ce qui n’est pas encore pris en charge.

## Configurer la CLI

Host n’utilise pas la connexion par navigateur de la CLI. Chaque commande reçoit l’adresse de l’API par `--api` et la clé par la variable `VERCEL_TOKEN`.

```bash
npm install --global vercel@63
export VERCEL_TOKEN=ah_…
vercel --api https://api.host.hgdc.ch deploy
```

Pour ne pas retaper l’adresse, crée un alias dans ton profil de shell :

```bash
# ~/.bashrc ou ~/.zshrc
alias vh="vercel --api https://api.host.hgdc.ch"

# Ensuite
vh deploy --prod
```

En PowerShell, dans `$PROFILE` :

```powershell
function vh { vercel --api https://api.host.hgdc.ch @args }
```

> **Attention**
>
> Sans `--api`, la CLI parle à Vercel. Si une commande te demande de te connecter dans le navigateur, vérifie que l’option est bien présente.

### Options globales

| Option    | Valeur | Rôle                                                                                         |
| --------- | ------ | -------------------------------------------------------------------------------------------- |
| `--api`   | URL    | Adresse de l’API : `https://api.host.hgdc.ch`                                                |
| `--token` | `ah_…` | Clé d’API. Préfère la variable `VERCEL_TOKEN`, qui n’apparaît pas dans l’historique du shell |

### Ce qui n’est pas pris en charge

| Commande ou option  | État                                                                                         |
| ------------------- | -------------------------------------------------------------------------------------------- |
| `vercel login`      | Non : la connexion passe par la clé                                                          |
| `vercel env`        | Pas encore : gère les variables dans la console                                              |
| `vercel domains`    | Pas encore : gère les domaines dans la console                                               |
| `vercel logs`       | Pas encore : les logs sont dans la console                                                   |
| `vercel alias`      | Pas encore : utilise la console, voir [Revenir en arrière](/docs/guides/revenir-en-arriere/) |
| `--scope`, `--team` | Ignorés : l’organisation vient de la clé                                                     |

## vercel deploy

Envoie un dossier, ou un build déjà construit, et crée un déploiement. Sans option, la commande crée une preview. Avec `--prod`, elle part en production.

```bash
# Preview du dossier courant
vercel --api https://api.host.hgdc.ch deploy

# Production
vercel --api https://api.host.hgdc.ch deploy --prod
```

Dans un script, l’adresse du déploiement est écrite seule sur la sortie standard :

```bash
URL=$(vercel --api https://api.host.hgdc.ch deploy --yes)
echo "Preview : $URL"
```

| Option                | Rôle                                                                                        |
| --------------------- | ------------------------------------------------------------------------------------------- |
| `--prod`              | Déploie en production                                                                       |
| `--prebuilt`          | Envoie `.vercel/output`, produit par `vercel build`, sans reconstruire                      |
| `--yes`               | Répond oui à toutes les questions : relie le dossier et crée le projet. Indispensable en CI |
| `--cwd <chemin>`      | Dossier à déployer, s’il n’est pas le dossier courant                                       |
| `--meta <clé=valeur>` | Métadonnée attachée au déploiement                                                          |

La commande affiche l’adresse du déploiement, suit la publication, puis rend la main quand le déploiement est prêt ou en erreur. Le suivi dure 9 minutes au plus.

Pour un framework, construis d’abord avec `vercel build`, puis envoie le résultat avec `--prebuilt`. Utilise la même cible des deux côtés : `build --prod` avec `deploy --prebuilt --prod`, ou aucune des deux pour une preview. Sinon, la CLI refuse l’envoi.

## vercel build

Construit le projet en local ou en CI, au format Build Output API. Le résultat va dans `.vercel/output`, prêt pour `vercel deploy --prebuilt`.

```bash
# Build de preview
vercel --api https://api.host.hgdc.ch build

# Build de production
vercel --api https://api.host.hgdc.ch build --prod
```

Avant de construire, la commande télécharge les variables de l’environnement visé : preview par défaut, production avec `--prod`. Une variable sensible n’est pas téléchargée depuis un poste, seulement depuis le build du dépôt GitHub.

| Option           | Rôle                                                                      |
| ---------------- | ------------------------------------------------------------------------- |
| `--prod`         | Construit pour la production, avec les variables de production            |
| `--yes`          | Télécharge les réglages du projet sans rien demander. Indispensable en CI |
| `--cwd <chemin>` | Dossier du projet, s’il n’est pas le dossier courant                      |

## vercel pull

Télécharge les réglages du projet et les variables d’un environnement. `vercel build` s’en sert ensuite.

```bash
# Variables de développement, par défaut
vercel --api https://api.host.hgdc.ch pull

# Variables de preview ou de production
vercel --api https://api.host.hgdc.ch pull --environment=preview
vercel --api https://api.host.hgdc.ch pull --environment=production
```

Les variables sont écrites dans `.vercel/.env.<environnement>.local`. La CLI ajoute ce dossier au `.gitignore` : ne le commite pas.

| Option           | Valeur                                   | Rôle                                                 |
| ---------------- | ---------------------------------------- | ---------------------------------------------------- |
| `--environment`  | `development`, `preview` ou `production` | Environnement à lire. Par défaut : `development`     |
| `--yes`          |                                          | Relie le dossier sans rien demander                  |
| `--cwd <chemin>` |                                          | Dossier du projet, s’il n’est pas le dossier courant |

Ce que reçoit la commande dépend de la clé :

| Clé                                   | Variables normales | Variables sensibles |
| ------------------------------------- | ------------------ | ------------------- |
| Clé d’organisation                    | Oui                | Non                 |
| Clé de projet, posée par l’app GitHub | Oui                | Oui                 |

## vercel link

Relie un dossier local à un projet. Les autres commandes savent ensuite à quel projet s’adresser.

```bash
vercel --api https://api.host.hgdc.ch link

# Sans question, avec le nom du dossier
vercel --api https://api.host.hgdc.ch link --yes
```

La liaison est écrite dans `.vercel/project.json`, qui contient `orgId` et `projectId`. Le premier `link` ou `deploy` sur un nom inconnu crée le projet, sous le nom du dossier.

| Option            | Rôle                                                                     |
| ----------------- | ------------------------------------------------------------------------ |
| `--yes`           | Relie le dossier sans rien demander, et crée le projet s’il n’existe pas |
| `--project <nom>` | Nom du projet à relier, s’il n’est pas celui du dossier                  |
| `--cwd <chemin>`  | Dossier à relier, s’il n’est pas le dossier courant                      |

En CI, sans dossier `.vercel`, donne les deux identifiants par variables d’environnement, avec la clé :

```bash
export VERCEL_ORG_ID=…
export VERCEL_PROJECT_ID=…
export VERCEL_TOKEN=ah_…
vercel --api https://api.host.hgdc.ch deploy --prod --yes
```

`VERCEL_ORG_ID` est la valeur renvoyée par [GET /v2/user](/docs/reference/api/utilisateur/). Le workflow posé par l’app GitHub contient déjà les bonnes valeurs.

Pour délier un dossier, supprime son dossier `.vercel`. Le prochain déploiement te redemandera le projet.

## Voir aussi

- [Référence de l’API](/docs/reference/api/introduction/) : les mêmes opérations, sans la CLI.
- [Compatibilité](/docs/reference/compatibilite/) : la liste des fonctions de la CLI et de la plateforme.
