SSR with Nuxt 3
Thème :
Junior
1 vues ·6/9 leçons

Les Options de Déploiement (Mettre Nuxt En Production)

Nuxt peut être déployé de diverses manières selon votre stratégie de rendu.

Les Commandes de Build

# SSR (Server-Side Rendering)
npm run build
# Crée le répertoire .output/

# SSG (Static Site Generation)
npm run generate
# Crée le répertoire .output/public/

Serveur Node.js (SSR)

# Build
npm run build

# Démarrer le serveur de production
node .output/server/index.mjs
# ou
npm run preview

PM2 (Process Manager)

// ecosystem.config.js
module.exports = {
    apps: [
        {
            name: 'nuxt-app',
            script: '.output/server/index.mjs',
            instances: 'max',
            exec_mode: 'cluster',
            env: {
                NODE_ENV: 'production',
                PORT: 3000,
            },
        },
    ],
};
pm2 start ecosystem.config.js

Hébergement Statique (SSG)

# Générer les fichiers statiques
npm run generate

# Sortie dans .output/public/
# Déployer sur n'importe quel hébergeur statique

Compatible avec :

  • Netlify
  • Vercel (statique)
  • GitHub Pages
  • Cloudflare Pages
  • AWS S3 + CloudFront

Vercel

# Installer CLI Vercel
npm i -g vercel

# Déployer
vercel

Ou connecter le dépôt GitHub au tableau de bord Vercel.

// vercel.json (optionnel)
{
    "buildCommand": "npm run build",
    "outputDirectory": ".output"
}

Netlify

# netlify.toml
[build]
  command = "npm run build"
  publish = ".output/public"

[build.environment]
  NODE_VERSION = "18"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

Pour SSR :

[build]
  command = "npm run build"

[functions]
  directory = ".output/server"

Cloudflare Pages

// nuxt.config.ts
export default defineNuxtConfig({
    nitro: {
        preset: 'cloudflare-pages',
    },
});

Docker

# Dockerfile
FROM node:18-alpine

WORKDIR /app

# Copier les fichiers package
COPY package*.json ./
RUN npm ci

# Copier le source
COPY . .

# Build
RUN npm run build

# Exposer le port
EXPOSE 3000

# Démarrer le serveur
CMD ["node", ".output/server/index.mjs"]
# Build et lancer
docker build -t nuxt-app .
docker run -p 3000:3000 nuxt-app

Les Variables d’Environnement

// nuxt.config.ts
export default defineNuxtConfig({
    runtimeConfig: {
        // Serveur uniquement (JAMAIS côté client)
        apiSecret: process.env.API_SECRET,

        // Client + Serveur
        public: {
            apiBase: process.env.API_BASE || '/api',
        },
    },
});
<!-- Dans les composants -->
<script setup>
const config = useRuntimeConfig();

// Client + Serveur
console.log(config.public.apiBase);

// Serveur uniquement (dans le répertoire server/)
console.log(config.apiSecret);
</script>

Pré-rendu de Routes Spécifiques

// nuxt.config.ts
export default defineNuxtConfig({
    nitro: {
        prerender: {
            routes: ['/sitemap.xml', '/robots.txt'],
            crawlLinks: true, // Pré-rend tous les liens trouvés
        },
    },

    routeRules: {
        '/': { prerender: true }, // SSG
        '/blog/**': { isr: 3600 }, // ISR (1h de cache)
        '/dashboard/**': { ssr: false }, // CSR uniquement
    },
});

Le Health Check

// server/api/health.get.ts
export default defineEventHandler(() => {
    return {
        status: 'healthy',
        timestamp: new Date().toISOString(),
    };
});

Optimisations de Performance

// nuxt.config.ts
export default defineNuxtConfig({
    // Fonctionnalités expérimentales
    experimental: {
        payloadExtraction: true,
        renderJsonPayloads: true,
    },

    // Compression des assets publics
    nitro: {
        compressPublicAssets: true,
    },

    // Préconnexion aux APIs externes
    app: {
        head: {
            link: [{ rel: 'preconnect', href: 'https://api.example.com' }],
        },
    },
});

Les Grimoires De Tests


📘 Cette leçon fait partie du cours Vue SSR & Nuxt sur la plateforme d’apprentissage RostoDev.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Les Options de Déploiement (Mettre Nuxt En Production). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.