{"id":74014,"date":"2023-10-30T13:33:33","date_gmt":"2023-10-30T12:33:33","guid":{"rendered":"https:\/\/kinqsta.com\/fr\/?p=74014&#038;preview=true&#038;preview_id=74014"},"modified":"2023-10-31T09:54:41","modified_gmt":"2023-10-31T08:54:41","slug":"gatsby","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/","title":{"rendered":"Un guide complet pour construire des sites statiques avec Gatsby"},"content":{"rendered":"<p>Les sites web statiques ont fait leur retour ces derni\u00e8res ann\u00e9es gr\u00e2ce \u00e0 leur rapidit\u00e9, leur s\u00e9curit\u00e9 et leur simplicit\u00e9. L&rsquo;un des principaux outils de cr\u00e9ation de sites statiques est aujourd&rsquo;hui Gatsby, un <a href=\"https:\/\/kinqsta.com\/fr\/sujets\/generateurs-sites-statiques\/\">g\u00e9n\u00e9rateur de sites statiques<\/a> (Static Site Generator ou SSG) ultra-rapide.<\/p>\n<p>Que vous soyez un d\u00e9veloppeur web cherchant \u00e0 cr\u00e9er un <a href=\"https:\/\/kinqsta.com\/fr\/blog\/idees-noms-blog\/\">blog personnel<\/a>, un <a href=\"https:\/\/kinqsta.com\/fr\/blog\/site-portfolio\/\">site de portfolio<\/a> ou un site d&rsquo;entreprise, Gatsby peut vous aider \u00e0 atteindre vos objectifs. Ce guide complet vous guide \u00e0 travers le processus de cr\u00e9ation de <a href=\"https:\/\/kinqsta.com\/fr\/blog\/site-statique\/\">sites statiques<\/a> avec Gatsby. Il couvre tous les aspects, des bases aux sujets avanc\u00e9s.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/10\/gatsby-demo-site.gif\" alt=\"Un site de d\u00e9monstration montrant ce que vous pouvez construire apr\u00e8s avoir lu ce guide.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Un site de d\u00e9monstration montrant ce que vous pouvez construire apr\u00e8s avoir lu ce guide.<\/figcaption><\/figure>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Comprendre les sites statiques<\/h2>\n<p>Les sites statiques sont des pages web contenant des fichiers <a href=\"https:\/\/kinqsta.com\/fr\/blog\/qu-est-ce-que-le-html\/\">HTML<\/a>, <a href=\"https:\/\/kinqsta.com\/fr\/blog\/meilleurs-pratiques-css\/\">CSS<\/a> et <a href=\"https:\/\/kinqsta.com\/javascript\/\">JavaScript<\/a> pr\u00e9-rendus. Contrairement aux sites dynamiques, ils ne d\u00e9pendent pas d&rsquo;un traitement c\u00f4t\u00e9 serveur pour chaque requ\u00eate. Au lieu de cela, tout le contenu est g\u00e9n\u00e9r\u00e9 \u00e0 l&rsquo;avance et servi directement au navigateur de l&rsquo;utilisateur. Cette approche pr\u00e9sente plusieurs avantages :<\/p>\n<ol start=\"1\">\n<li><strong>Vitesse :<\/strong> Les sites statiques se chargent rapidement puisqu&rsquo;il n&rsquo;y a pas de traitement c\u00f4t\u00e9 serveur.<\/li>\n<li><strong>S\u00e9curit\u00e9 :<\/strong> En l&rsquo;absence d&rsquo;ex\u00e9cution de code c\u00f4t\u00e9 serveur, les sites statiques sont moins vuln\u00e9rables aux menaces de s\u00e9curit\u00e9.<\/li>\n<li><strong>\u00c9volutivit\u00e9<\/strong>: Il est facile de mettre en cache et de distribuer des sites statiques par l&rsquo;interm\u00e9diaire de r\u00e9seaux de diffusion de contenu (CDN).<\/li>\n<li><strong>Simplicit\u00e9 :<\/strong> Ils sont plus faciles \u00e0 d\u00e9velopper, \u00e0 d\u00e9ployer et \u00e0 entretenir.<\/li>\n<\/ol>\n<p>Maintenant que vous comprenez ce que sont les sites statiques et leurs avantages, plongeons dans Gatsby.<\/p>\n<h2>Qu&rsquo;est-ce que Gatsby ?<\/h2>\n<p>Gatsby est un framework open-source bas\u00e9 sur la biblioth\u00e8que JavaScript <a href=\"https:\/\/kinqsta.com\/fr\/blog\/qu-est-react-js\/\">React<\/a> qui simplifie le processus de construction de sites web statiques. Il combine la puissance des <a href=\"https:\/\/kinqsta.com\/fr\/blog\/bibliotheque-composants-react-ui\/\">composants React<\/a> avec GraphQL pour la gestion des donn\u00e9es, ce qui en fait un excellent choix pour les d\u00e9veloppeurs de tous niveaux. Voici pourquoi Gatsby se d\u00e9marque :<\/p>\n<ol start=\"1\">\n<li><strong>Rapide comme l&rsquo;\u00e9clair :<\/strong> Gatsby optimise la vitesse de votre site \u00e0 l&rsquo;aide de techniques telles que le fractionnement du code et le chargement diff\u00e9r\u00e9, ce qui se traduit par des chargements de pages quasi instantan\u00e9s.<\/li>\n<li><strong>Source de donn\u00e9es flexible :<\/strong> Gatsby peut extraire des donn\u00e9es de diff\u00e9rents endroits, notamment de fichiers Markdown, d&rsquo;API et de bases de donn\u00e9es.<\/li>\n<li><strong>Un riche \u00e9cosyst\u00e8me d&rsquo;extensions :<\/strong> Le <a href=\"https:\/\/www.gatsbyjs.com\/plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">vaste \u00e9cosyst\u00e8me d&rsquo;extenions<\/a> de Gatsby vous permet d&rsquo;\u00e9tendre ses fonctionnalit\u00e9s sans effort.<\/li>\n<li><strong>SEO et performance :<\/strong> Gatsby g\u00e9n\u00e8re automatiquement du HTML optimis\u00e9 pour un meilleur r\u00e9f\u00e9rencement et de meilleures performances.<\/li>\n<\/ol>\n<h2>D\u00e9marrer avec Gatsby<\/h2>\n<p>Pour suivre ce guide, vous devez avoir :<\/p>\n<ul>\n<li>Une compr\u00e9hension fondamentale du HTML, du CSS et du JavaScript<\/li>\n<li>Une connaissance de base de React<\/li>\n<li>Node.js et npm (<a href=\"https:\/\/kinqsta.com\/fr\/blog\/qu-est-npm\/\">Node Package Manager<\/a>) ou <a href=\"https:\/\/kinqsta.com\/fr\/blog\/outils-developpement-web\/#39-yarn\">yarn<\/a> install\u00e9s sur votre ordinateur<\/li>\n<\/ul>\n<p>Pour d\u00e9marrer avec Gatsby et cr\u00e9er un projet, vous pouvez utiliser l&rsquo;un des nombreux exemples de la <a href=\"https:\/\/www.gatsbyjs.com\/starters\/\" target=\"_blank\" rel=\"noopener noreferrer\">biblioth\u00e8que de d\u00e9marrage Gatsby<\/a> ou cr\u00e9er un projet \u00e0 partir de z\u00e9ro.<\/p>\n<p>Pour ce guide, nous utiliserons l&rsquo;exemple <a href=\"https:\/\/www.gatsbyjs.com\/starters\/gatsbyjs\/gatsby-starter-hello-world\/\" target=\"_blank\" rel=\"noopener noreferrer\">officiel hello world starter<\/a> pour GatsbyJS car il nous donne un projet simple sans extensions ni fichiers suppl\u00e9mentaires.<\/p>\n<ol start=\"1\">\n<li>Tout d&rsquo;abord, installez le CLI Gatsby sur votre ordinateur en ex\u00e9cutant la commande suivante :<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">npm install -g gatsby-cli<\/code><\/pre>\n<p>Ex\u00e9cutez <code>gatsby --version<\/code> pour v\u00e9rifier si l&rsquo;installation a r\u00e9ussi.<\/p>\n<ol start=\"2\">\n<li>Ensuite, acc\u00e9dez au dossier dans lequel vous souhaitez cr\u00e9er votre projet et ex\u00e9cutez la commande suivante :<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">npx gatsby new &lt;project-name&gt; https:\/\/github.com\/gatsbyjs\/gatsby-starter-hello-world<\/code><\/pre>\n<p>Remplacez <code>&lt;project-name&gt;<\/code> par le nom de votre choix pour votre projet.<\/p>\n<ol start=\"3\">\n<li>Une fois l&rsquo;op\u00e9ration termin\u00e9e, acc\u00e9dez au dossier du projet et d\u00e9marrez le serveur de d\u00e9veloppement :<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">cd &lt;project-name&gt;\ngatsby develop<\/code><\/pre>\n<p>Le serveur de d\u00e9veloppement local d\u00e9marrera \u00e0 l&rsquo;adresse <a href=\"http:\/\/localhost:8000\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:8000<\/a>, o\u00f9 vous pourrez acc\u00e9der \u00e0 votre site Gatsby.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/10\/gatsby-hello-world.png\" alt=\"Le th\u00e8me Gatsby hello world.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Le th\u00e8me Gatsby hello world.<\/figcaption><\/figure>\n<h3>Comprendre la structure des fichiers Gatsby<\/h3>\n<p>Lorsque vous ouvrez votre projet dans un \u00e9diteur de code, vous voyez la structure suivante :<\/p>\n<pre><code class=\"language-bash\">\/\n|-- \/public\n|-- \/src\n    |-- \/pages\n        |-- index.js\n|-- \/static\n|-- gatsby-config.js<\/code><\/pre>\n<ul>\n<li><strong>\/public :<\/strong> Ce r\u00e9pertoire contient la sortie de votre processus de construction Gatsby. C&rsquo;est l\u00e0 que se trouvent les fichiers HTML, CSS, JavaScript et autres ressources g\u00e9n\u00e9r\u00e9s.<\/li>\n<li><strong>\/src :<\/strong> C&rsquo;est le c\u0153ur de votre projet Gatsby, o\u00f9 vous passerez la plupart de votre temps. Il contient divers sous-r\u00e9pertoires et fichiers :\n<ul>\n<li><strong>\/pages :<\/strong> C&rsquo;est ici que sont stock\u00e9es toutes les pages de votre projet. Chaque fichier JavaScript correspond \u00e0 une route de votre site web.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><strong>\/static :<\/strong> Ce r\u00e9pertoire est utilis\u00e9 pour les fichiers statiques que vous souhaitez inclure dans votre site, tels que les images, les polices ou les fichiers t\u00e9l\u00e9chargeables. Ces fichiers sont servis tels quels et ne sont pas trait\u00e9s par Gatsby.<\/li>\n<li><strong>gatsby-config.js :<\/strong> Ce fichier de configuration est l&rsquo;endroit o\u00f9 vous d\u00e9finissez divers r\u00e9glages pour votre site Gatsby. Ici vous pouvez sp\u00e9cifier les extensions, les m\u00e9tadonn\u00e9es du site et d&rsquo;autres configurations.<\/li>\n<\/ul>\n<h2>Cr\u00e9ation de pages et de composants<\/h2>\n<p>Dans Gatsby, la cr\u00e9ation de pages web est un processus simple. Tout fichier JavaScript que vous cr\u00e9ez dans le dossier <strong>\/src\/pages<\/strong> devient automatiquement une page avec sa route correspondante, gr\u00e2ce \u00e0 la g\u00e9n\u00e9ration automatique de pages de Gatsby.<\/p>\n<p>Vous pouvez cr\u00e9er autant de pages que n\u00e9cessaire pour votre site web en ajoutant d&rsquo;autres fichiers JavaScript au dossier <strong>\/src\/pages<\/strong>. Par exemple, vous pouvez cr\u00e9er un fichier <strong>about.js<\/strong> pour une page \u00c0 propos.<\/p>\n<p>Bien que vous puissiez cr\u00e9er des fichiers JavaScript individuels pour chaque page directement dans le dossier <strong>\/src\/pages<\/strong>, il est \u00e9galement possible d&rsquo;organiser davantage vos pages. Vous pouvez cr\u00e9er des sous-dossiers pour regrouper des pages similaires. Par exemple, vous pouvez cr\u00e9er un dossier <strong>blog<\/strong> pour organiser toutes les pages li\u00e9es \u00e0 votre blog.<\/p>\n<p>Pour ce projet, voici \u00e0 quoi ressemblera la structure des pages :<\/p>\n<pre><code class=\"language-bash\">|-- \/src\n    |-- \/pages\n        |-- about.js\n        |-- index.js\n        |-- \/blog\n            |-- index.js<\/code><\/pre>\n<h3>Utilisation de JSX pour les pages<\/h3>\n<p>Gatsby \u00e9tant construit sur React, ses pages et ses composants sont \u00e9crits en <a href=\"https:\/\/kinqsta.com\/fr\/blog\/guide-syntaxe-jsx\/\">JSX<\/a> (JavaScript XML). JSX est une extension syntaxique pour JavaScript qui vous permet de d\u00e9finir la structure et la disposition de vos interfaces utilisateur d&rsquo;une mani\u00e8re tr\u00e8s lisible et expressive.<\/p>\n<p>Par exemple, vous pouvez cr\u00e9er le contenu de votre page d&rsquo;accueil (<strong>index.js<\/strong>) comme suit :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\nexport default function Home() {\n  return (\n    &lt;&gt;\n      &lt;div&gt;\n        &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n        &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  );\n}<\/code><\/pre>\n<h3>Lier des pages dans Gatsby<\/h3>\n<p>Pour cr\u00e9er un lien vers une autre page, vous pouvez utiliser le composant <code>Link<\/code> comme suit :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport { Link } from 'gatsby';\n\nexport default function Home() {\n    return (\n        &lt;&gt;\n            &lt;div&gt;\n                &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n                &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n                &lt;Link&gt; to=\"\/about\"&gt;About Us&lt;\/Link&gt;\n                &lt;Link&gt; to=\"\/blog\"&gt;Blog&lt;\/Link&gt;\n            &lt;\/div&gt;\n        &lt;\/&gt;\n    );\n}<\/code><\/pre>\n<p>Dans l&rsquo;exemple ci-dessus, nous avons import\u00e9 le composant <code>Link<\/code> depuis <code>gatsby<\/code> et l&rsquo;avons utilis\u00e9 pour cr\u00e9er des liens vers la page \u00c0 propos de nous et un blog. La page \u00c0 propos de nous, par exemple, a pour route <code>\/about<\/code>. Lorsque les utilisateurs cliquent sur le lien \u00c0 propos de nous, ils sont redirig\u00e9s vers la page <code>\/about<\/code>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Le r\u00e9sultat du code ci-dessus peut apparaitre comme deux \u00e9l\u00e9ments li\u00e9s fusionn\u00e9s, mais notez que c&rsquo;est uniquement \u00e0 des fins d&rsquo;explication. Une barre de navigation sera cr\u00e9\u00e9e ult\u00e9rieurement pour pr\u00e9senter ces liens avec le style appropri\u00e9.<\/p>\n<\/aside>\n\n<p>Pour cr\u00e9er des liens vers des sites web externes, vous pouvez utiliser des balises d&rsquo;ancrage ordinaires (<code>&lt;a&gt;<\/code>) avec l&rsquo;attribut <code>href<\/code>:<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\nexport default function Home() {\n  return (\n        &lt;&gt;\n            &lt;div&gt;\n                &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n                &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n                &lt;div&gt;\n                    &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n                    &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n                    &lt;a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\" target=\"_blank\" rel=\"noreferrer\"&gt;\n                        &lt;div&gt;Read more&lt;\/div&gt;\n                    &lt;\/a&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/&gt;\n    );\n}<\/code><\/pre>\n<p>Dans ce cas, le lien ouvre le site web externe dans un nouvel onglet du navigateur gr\u00e2ce aux attributs <code>target=\"_blank\"<\/code> et <code>rel=\"noreferrer\"<\/code>.<\/p>\n<h3>Cr\u00e9ation de composants dans Gatsby<\/h3>\n<p>L&rsquo;architecture \u00e0 base de composants de Gatsby vous permet de cr\u00e9er des blocs de construction r\u00e9utilisables pour vos pages web. Au lieu de dupliquer le code sur plusieurs pages, vous pouvez encapsuler les \u00e9l\u00e9ments communs dans des composants, ce qui rend votre base de code plus organis\u00e9e, plus facile \u00e0 maintenir et plus efficace.<\/p>\n<p>Supposons que le code de votre page d&rsquo;accueil comprenne la section de navigation, le contenu principal et un pied de page :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport { Link } from 'gatsby';\n\nexport default function Home() {\n  return (\n    &lt;&gt;\n      &lt;div className=\"nav-links\"&gt;\n        &lt;Link&gt; to=\"\/\"&gt;Home&lt;\/Link&gt;\n        &lt;Link&gt; to=\"\/about\"&gt;About&lt;\/Link&gt;\n        &lt;Link&gt; to=\"\/blog\"&gt;Blog&lt;\/Link&gt;\n      &lt;\/div&gt;\n      &lt;div&gt;\n        &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n        &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n        &lt;a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\"&gt;\n          &lt;div&gt;Read more&lt;\/div&gt;\n        &lt;\/a&gt;\n      &lt;\/div&gt;\n      &lt;div className=\"footer\"&gt;\n        &lt;p&gt;\n          Hosted with \u2764\ufe0f by Kinsta's{' '}\n          &lt;a&gt; href=\"https:\/\/kinqsta.com\/static-site-hosting\"&gt;\n            Static Site Hosting\n          &lt;\/a&gt;\n          .\n        &lt;\/p&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  );\n}<\/code><\/pre>\n<p>Imaginez que vous deviez dupliquer le code de la barre de navigation et du pied de page pour chaque page de votre site. C&rsquo;est l\u00e0 que la puissance des composants entre en jeu. Vous pouvez cr\u00e9er des composants r\u00e9utilisables pour la barre de navigation, le pied de page et chaque \u00e9l\u00e9ment de code qui serait r\u00e9p\u00e9t\u00e9 sur plusieurs pages et composants.<\/p>\n<p>Pour travailler avec des composants dans Gatsby, cr\u00e9ez un dossier <strong>components<\/strong> dans le dossier <strong>src<\/strong> pour stocker tous les composants. Ensuite, cr\u00e9ez vos composants, par exemple <strong>Navbar.js<\/strong> et <strong>Footer.js<\/strong>. Dans le fichier <strong>Navbar.js<\/strong>, s\u00e9parez le code de la mani\u00e8re suivante :<\/p>\n<pre><code class=\"language-jsx\">import { Link } from 'gatsby';\nimport React from 'react';\n\nconst Navbar = () =&gt; {\n    return (\n        &lt;nav&gt;\n            &lt;div className=\"nav-links\"&gt;\n                &lt;Link to=\"\/\"&gt;Home&lt;\/Link&gt;\n                &lt;Link to=\"\/about\"&gt;About&lt;\/Link&gt;\n                &lt;Link to=\"\/blog\"&gt;Blog&lt;\/Link&gt;\n            &lt;\/div&gt;\n        &lt;\/nav&gt;\n    );\n};\n\nexport default Navbar;<\/code><\/pre>\n<p>Et aussi votre <strong>Footer.js<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nconst Footer = () =&gt; {\n    return (\n        &lt;div className=\"footer\"&gt;\n            &lt;p&gt;\n                Hosted with \u2764\ufe0f by Kinsta's{' '}\n                &lt;a&gt; href=\"https:\/\/kinqsta.com\/static-site-hosting\"&gt;Static Site Hosting&lt;\/a&gt;\n                .\n            &lt;\/p&gt;\n        &lt;\/div&gt;\n    );\n};\n\nexport default Footer;<\/code><\/pre>\n<p>Ensuite, importez vos fichiers de composants dans vos pages ou composants et utilisez cette m\u00e9thode :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Navbar from '..\/components\/Navbar';\nimport Footer from '..\/components\/Footer';\n\nexport default function Home() {\n  return (\n    &lt;&gt;\n      &lt;Navbar \/&gt;\n      &lt;div&gt;\n        &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n        &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n        &lt;a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\"&gt;\n          &lt;div&gt;Read more&lt;\/div&gt;\n        &lt;\/a&gt;\n      &lt;\/div&gt;\n      &lt;Footer \/&gt;\n    &lt;\/&gt;\n  );\n}<\/code><\/pre>\n<h3>Cr\u00e9ation d&rsquo;un composant de mise en page<\/h3>\n<p>Une pratique courante dans le d\u00e9veloppement web consiste \u00e0 cr\u00e9er un <a href=\"https:\/\/www.gatsbyjs.com\/docs\/how-to\/routing\/layout-components\/\" target=\"_blank\" rel=\"noopener noreferrer\">composant de mise en page<\/a> qui encapsule la structure globale de votre site. Le composant de mise en page comprend g\u00e9n\u00e9ralement des \u00e9l\u00e9ments qui apparaissent sur chaque page, tels que les en-t\u00eates, les pieds de page, les menus de navigation et les colonnes lat\u00e9rales.<\/p>\n<p>Cr\u00e9ez un nouveau fichier appel\u00e9 <strong>Layout.js<\/strong> dans votre dossier <strong>\/src\/components<\/strong>. D\u00e9finissez ensuite la structure de la mise en page. Pour ce guide, la structure de mise en page ne comprendra que la barre de navigation et le pied de page :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Navbar from '.\/Navbar';\nimport Footer from '.\/Footer';\n\nconst Layout = ({ children }) =&gt; {\n    return (\n        &lt;div className=\"layout\"&gt;\n            &lt;Navbar \/&gt;\n            &lt;div&gt; className=\"content\"&gt;{children}&lt;\/div&gt;\n            &lt;Footer \/&gt;\n        &lt;\/div&gt;\n    );\n};\n\nexport default Layout;<\/code><\/pre>\n<p>Dans ce composant de mise en page, nous utilisons les composants pour envelopper le contenu de la page (fourni \u00e0 l&rsquo;adresse <code>children<\/code>). Pour utiliser le composant de mise en page dans vos pages, importez-le et int\u00e9grez-le au contenu de votre page. Par exemple, dans votre page <strong>index.js<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Layout from '..\/components\/Layout';\n\nexport default function Home() {\n  return (\n    &lt;Layout&gt;\n      &lt;div&gt;\n        &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n        &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n        &lt;a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\"&gt;\n          &lt;div&gt;Read more&lt;\/div&gt;\n        &lt;\/a&gt;\n      &lt;\/div&gt;\n    &lt;\/Layout&gt;\n  );\n}<\/code><\/pre>\n<p>En utilisant un composant de mise en page, vous garantissez une structure et une apparence coh\u00e9rentes sur l&rsquo;ensemble de vos pages, tout en veillant \u00e0 ce que votre code soit organis\u00e9 et facile \u00e0 maintenir. C&rsquo;est un moyen puissant de g\u00e9rer efficacement les \u00e9l\u00e9ments communs de votre site.<\/p>\n<h3>Styliser les pages et les composants dans Gatsby<\/h3>\n<p>Le style de votre site Gatsby est flexible et vous permet d&rsquo;utiliser diff\u00e9rentes approches, y compris le CSS simple, le CSS-in-JS ou les pr\u00e9-processeurs CSS comme Sass. Voyons comment cr\u00e9er un style normal et un style de module pour les pages.<\/p>\n<h4>Style CSS<\/h4>\n<p>Dans Gatsby, vous pouvez facilement cr\u00e9er un fichier CSS et le lier \u00e0 n&rsquo;importe quel composant ou page, et il fonctionnera parfaitement. Par exemple, vous pouvez cr\u00e9er un dossier <strong>styles<\/strong> dans le dossier <strong>src<\/strong>, puis cr\u00e9er un fichier <strong>global.css<\/strong> avec votre code CSS.<\/p>\n<p>Par exemple, voici quelques styles globaux de base pour les composants cr\u00e9\u00e9s pr\u00e9c\u00e9demment :<\/p>\n<pre><code class=\"language-css\">@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500&display=swap');\n\n* {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n}\n\nbody {\n    background-color: #ddd;\n    font-family: 'Poppins',\n        sans-serif;\n    width: 1200px;\n    margin: 0 auto;\n}\n\na {\n    text-decoration: none;\n}\n\nimg {\n    width: 100%;\n}\n\nnav {\n    display: flex;\n    justify-content: space-between;\n    height: 200px;\n    align-items: center;\n}\n\nnav .logo-img {\n    width: 100px;\n}\n\nnav .nav-links a {\n    padding: 0 20px;\n    font-size: 18px;\n}\n\n@media (max-width:700px) {\n    body {\n        width: 100%;\n        padding: 0 20px;\n    }\n\n    nav .nav-links a {\n        padding: 0 18px;\n    }\n}\n\n.footer {\n    width: 100%;\n    text-align: center;\n    margin: 100px 0 20px;\n}<\/code><\/pre>\n<p>Dans le code ci-dessus, vous importez la police Poppins de <a href=\"https:\/\/kinqsta.com\/fr\/blog\/meilleures-polices-google-fonts\/\">Google Fonts<\/a> et d\u00e9finissez ensuite des styles de base \u00e0 appliquer \u00e0 tous vos composants.<\/p>\n<p>Ensuite, importez le fichier CSS dans les composants que vous souhaitez styliser, mais pour ce projet, vous pouvez l&rsquo;ajouter \u00e0 votre composant Layout afin qu&rsquo;il s&rsquo;applique globalement :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Navbar from '.\/Navbar';\nimport Footer from '.\/Footer';\nimport '..\/styles\/global.css';\n\nconst Layout = ({ children }) =&gt; {\n    return (\n        &lt;div&gt;\n            &lt;Navbar \/&gt;\n            &lt;div&gt; className=\"content\"&gt;{children}&lt;\/div&gt;\n            &lt;Footer \/&gt;\n        &lt;\/div&gt;\n    );\n};\n\nexport default Layout;<\/code><\/pre>\n<h4>Module de stylisation CSS<\/h4>\n<p>Les modules CSS vous permettent d&rsquo;appliquer vos styles \u00e0 des composants ou \u00e0 des pages sp\u00e9cifiques. Cela permet d&rsquo;\u00e9viter les conflits de style et facilite la maintenance de votre code. Dans le dossier styles, cr\u00e9ez vos modules CSS en utilisant le format <strong>&lt;nom de la page&gt;.module.css<\/strong> et ajoutez le style sp\u00e9cifique au fichier.<\/p>\n<p>Par exemple, cr\u00e9ez <strong>home.module.css<\/strong> pour la page d&rsquo;accueil et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-css\">.home_hero {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-direction: column;\n    text-align: center;\n\n}\n\n.home_hero h1 {\n    font-size: 60px;\n    width: 70%;\n}\n\n.home_hero p {\n    color: #6E7076;\n    font-size: 20px;\n}\n\n.btn {\n    background-color: #5333ed;\n    padding: 20px 30px;\n    margin-top: 40px;\n    border-radius: 5px;\n    color: #fff;\n}\n\n@media (max-width:700px) {\n    .home_hero h1 {\n        font-size: 40px;\n    }\n\n    .home_hero p {\n        font-size: 16px;\n    }\n}<\/code><\/pre>\n<p>Pour utiliser les styles CSS du module dans votre page ou composant Gatsby, importez les styles de votre module CSS en tant qu&rsquo;objet en haut de votre page ou fichier de composant et utilisez cette m\u00e9thode :<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Layout from '..\/components\/Layout';\nimport * as styles from '..\/styles\/home.module.css';\n\nexport default function Home() {\n  return (\n    &lt;Layout&gt;\n      &lt;div className={styles.home_hero}&gt;\n        &lt;h1&gt;Enjoy Static Site Hosting With Kinsta StSH.&lt;\/h1&gt;\n        &lt;p&gt;Fast, Secure, Reliable Hosting Solution.&lt;\/p&gt;\n        &lt;a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\"&gt;\n          &lt;div className={styles.btn}&gt;Read more&lt;\/div&gt;\n        &lt;\/a&gt;\n      &lt;\/div&gt;\n    &lt;\/Layout&gt;\n  );\n}<\/code><\/pre>\n<p><aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Vous pouvez \u00e9galement appliquer un style en ligne, comme vous le feriez dans les composants React.<\/p>\n<\/aside>\n<br \/>\n<aside data-CI=\"V3VYTkx4cjJldkI5Xy1WZ2RGczFE\" data-7JE.hl=\"UFpfTkxTMzByRU1r\" data-eVRL=\"LXd5REY1WmRjUXJ4dA==\" data-T0ZIF=\"UGFvckc0UmxfeHN3TQ==\" data-saYA=\"MUg1Z1RlSW91Vy1q\" class=\"Wzk3OSwxMDExXQ==\" data-FkKc=\"MGVGc01LMWRWdnU3\" id=\"NzQwMTQ=\" data-r3koi=\"Im1pZGRsZSI=|ImZyX0ZSIg==\" data-B4WIOf=\"NDdsRlJlaE1rcnY=\" data-2UHuJEQ=\"Lko2LTNJUVkyTENTR0tnc3FuenQ1aw==\"><\/aside><\/p>\n<h2>Utilisation de fichiers statiques dans Gatsby<\/h2>\n<p>Dans Gatsby, les fichiers statiques font r\u00e9f\u00e9rence \u00e0 des ressources telles que des images, des polices, des fichiers CSS et d&rsquo;autres ressources qui sont servies directement au navigateur du client sans aucun traitement c\u00f4t\u00e9 serveur. Ces fichiers sont ajout\u00e9s au r\u00e9pertoire <strong>\/static<\/strong> \u00e0 la racine de votre projet.<\/p>\n<p>Par exemple, si vous ajoutez une image <strong>kinsta-logo.png<\/strong> au r\u00e9pertoire <strong>\/static<\/strong>, vous pouvez l&rsquo;afficher dans votre composant comme suit :<\/p>\n<pre><code class=\"language-jsx\">import { Link } from 'gatsby';\nimport React from 'react';\n\nconst Navbar = () =&gt; {\n    return (\n        &lt;nav&gt;\n            &lt;Link&gt; to=\"\/\"&gt;\n                &lt;img src=\"\/kinsta-logo.png\" alt=\"Kinsta Logo\" className=\"logo-img\" \/&gt;\n            &lt;\/Link&gt;\n            &lt;div className=\"nav-links\"&gt;\n                &lt;Link&gt; to=\"\/\"&gt;Home&lt;\/Link&gt;\n                &lt;Link&gt; to=\"\/about\"&gt;About&lt;\/Link&gt;\n                &lt;Link&gt; to=\"\/blog\"&gt;Blog&lt;\/Link&gt;\n            &lt;\/div&gt;\n        &lt;\/nav&gt;\n    );\n};\n\nexport default Navbar;<\/code><\/pre>\n<p>Gatsby r\u00e9sout automatiquement ces chemins relatifs en URL correctes lorsque votre site est construit. Plus loin dans ce guide, vous apprendrez comment optimiser les images dans Gatsby.<\/p>\n<h2>Plugins et int\u00e9grations<\/h2>\n<p>Gatsby dispose d&rsquo;un riche \u00e9cosyst\u00e8me d&rsquo;extensions qui peuvent \u00e9tendre ses fonctionnalit\u00e9s. Vous pouvez trouver des extensions pour le <a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-plugin-seo\/\" target=\"_blank\" rel=\"noopener noreferrer\">SEO<\/a>, les <a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-plugin-google-analytics\/\" target=\"_blank\" rel=\"noopener noreferrer\">statistiques<\/a>, l&rsquo;optimisation des images, la transformation markdown, et bien plus encore. L&rsquo;installation et la configuration des extensions est simple, et elles peuvent grandement am\u00e9liorer les capacit\u00e9s de votre site.<\/p>\n<p>Dans ce guide, nous utilisons quatre extensions :<\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-transformer-remark\/\" target=\"_blank\" rel=\"noopener noreferrer\">gatsby-transformer-remark<\/a>: Cette extension vous permet de transformer des fichiers Markdown en contenu HTML, ce qui facilite la cr\u00e9ation et la gestion d&rsquo;articles de blog, de documentation ou de tout autre contenu textuel.<\/li>\n<li><a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-transformer-sharp\/\" target=\"_blank\" rel=\"noopener noreferrer\">gatsby-transformer-sharp<\/a> et <a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-plugin-sharp\/\" target=\"_blank\" rel=\"noopener noreferrer\">gatsby-plugin-sharp<\/a>: Ces extensions travaillent ensemble pour optimiser et manipuler les images dans votre projet Gatsby.<\/li>\n<li><a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-source-filesystem\/\" target=\"_blank\" rel=\"noopener noreferrer\">gatsby-source-filesystem<\/a>: Cette extension vous permet d&rsquo;extraire des fichiers du r\u00e9pertoire de votre projet et de les rendre disponibles pour des requ\u00eates avec GraphQL.<\/li>\n<\/ol>\n<p>Pour utiliser ces extensions dans votre projet Gatsby, ex\u00e9cutez la commande suivante dans le r\u00e9pertoire racine de votre projet pour les installer :<\/p>\n<pre><code class=\"language-bash\">npm install gatsby-transformer-remark gatsby-transformer-sharp gatsby-plugin-sharp gatsby-source-filesystem<\/code><\/pre>\n<p>Ensuite, configurez-les dans votre fichier <strong>gatsby-config.js.<\/strong> Voici un exemple de configuration des extensions :<\/p>\n<pre><code class=\"language-js\">module.exports = {\n    plugins: [\n        \/\/ ...other plugins\n        \/\/ Transform Markdown files into HTML\n        'gatsby-transformer-remark',\n        \/\/ Optimize and manipulate images\n        'gatsby-transformer-sharp',\n        'gatsby-plugin-sharp',\n        \/\/ Source files from your project directory\n        {\n            resolve: `gatsby-source-filesystem`,\n            options: {\n                name: `posts`,\n                path: `${__dirname}\/src\/posts\/`,\n            },\n        },\n        {\n            resolve: `gatsby-source-filesystem`,\n            options: {\n                name: `images`,\n                path: `${__dirname}\/src\/images\/`,\n            },\n        },\n    ],\n};<\/code><\/pre>\n<p>Deux configurations <code>gatsby-source-filesystem<\/code> sont cr\u00e9\u00e9es, pointant vers deux dossiers : <strong>posts<\/strong> et <strong>images <\/strong>. Posts stockera certains fichiers markdown (articles de blog) qui seront transform\u00e9s avec <code>gatsby-transformer-remark<\/code>, et images stockera les images du blog et d&rsquo;autres images que vous souhaitez optimiser.<\/p>\n<p>N&rsquo;oubliez pas de red\u00e9marrer votre serveur de d\u00e9veloppement local lorsque vous apportez des modifications au fichier <strong>gatsby-config.js<\/strong>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Les images stock\u00e9es dans le dossier <strong>src<\/strong> d&rsquo;un projet Gatsby sont destin\u00e9es au contenu dynamique et sont optimis\u00e9es par les extensions Gatsby, tandis que les images du dossier <strong>\/static<\/strong> sont trait\u00e9es comme des ressources statiques et restent inchang\u00e9es dans la sortie de la compilation, ce qui les rend appropri\u00e9es pour des \u00e9l\u00e9ments tels que les logos et les ic\u00f4nes.<\/p>\n<\/aside>\n\n<h2>Cr\u00e9ation d&rsquo;articles de blog<\/h2>\n<p>Maintenant que nous avons configur\u00e9 nos extensions, cr\u00e9ez un dossier <strong>posts<\/strong> dans le r\u00e9pertoire <strong>src<\/strong> et cr\u00e9ez deux fichiers Markdown avec le contenu suivant :<\/p>\n<p><strong>post-1.md :<\/strong><\/p>\n<pre><code class=\"language-markdown\">---\ntitle: \"Introduction to Gatsby\"\ndate: \"2023-10-01\"\nslug: \"introduction-to-gatsby\"\ndescription: \"Learn the basics of Gatsby and its features.\"\nfeatureImg: ..\/images\/featured\/image-1.jpeg\n---\n\nWelcome to the world of Gatsby! In this post, we will introduce you to the basics of Gatsby and its powerful features.<\/code><\/pre>\n<p>Et <strong>post-2.md<\/strong> :<\/p>\n<pre><code class=\"language-markdown\">---\ntitle: \"Optimizing Images in Gatsby\"\ndate: \"2023-10-05\"\nslug: \"optimizing-images-in-gatsby\"\ndescription: \"Explore how to optimize images in your Gatsby project.\"\nfeatureImg: ..\/images\/featured\/image-2.jpeg\n---\n\nImages play a crucial role in web development. In this post, we'll dive into how to optimize images in Gatsby using plugins.<\/code><\/pre>\n<p>Ces fichiers Markdown contiennent des m\u00e9tadonn\u00e9es sur les articles du blog, notamment des titres, des dates, des slugs, des descriptions et des chemins d&rsquo;acc\u00e8s aux images.<\/p>\n<h2>Interroger Gatsby avec GraphQL<\/h2>\n<p>Gatsby utilise <a href=\"https:\/\/kinqsta.com\/fr\/blog\/graphql-vs-rest\/\">GraphQL<\/a> pour interroger et r\u00e9cup\u00e9rer les donn\u00e9es de votre site web. GraphQL est un langage de requ\u00eate puissant qui vous permet de demander exactement les donn\u00e9es dont vous avez besoin, ce qui le rend efficace et flexible. Voyons comment interroger des donn\u00e9es dans Gatsby \u00e0 l&rsquo;aide de GraphQL.<\/p>\n<p>Lorsque vous ex\u00e9cutez <code>gatsby develop<\/code> dans votre terminal, vous remarquerez qu&rsquo;en plus du lien <a href=\"https:\/\/www.gatsbyjs.com\/plugins\/gatsby-source-filesystem\/\" target=\"_blank\" rel=\"noopener noreferrer\">gatsby-source-filesystem<\/a>, qui ouvre votre projet sur le web, vous voyez \u00e9galement l&rsquo;URL <a href=\"http:\/\/localhost:8000\/___graphql\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:8000\/___graphql<\/a>. Cette URL permet d&rsquo;acc\u00e9der \u00e0 l&rsquo;<a href=\"https:\/\/www.gatsbyjs.com\/docs\/how-to\/querying-data\/running-queries-with-graphiql\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00e9diteur GraphiQL<\/a> pour votre projet Gatsby.<\/p>\n<p>Lorsque vous ouvrez l&rsquo;\u00e9diteur, vous voyez cette interface :<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/10\/graphiql-playground.png\" alt=\"Le terrain de jeu GraphiQL de Gatsby.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Le terrain de jeu GraphiQL de Gatsby.<\/figcaption><\/figure>\n<p>Vous pouvez interroger autant d&rsquo;informations que vous le souhaitez sur votre site \u00e0 partir de cet \u00e9diteur. Mais puisque vous avez cr\u00e9\u00e9 des fichiers Markdown et effectu\u00e9 toutes les configurations dans le fichier <strong>gatsby-config.js<\/strong>. Interrogeons les fichiers Markdown et leur contenu en lan\u00e7ant la requ\u00eate suivante dans l&rsquo;\u00e9diteur :<\/p>\n<pre><code class=\"language-json\">query BlogList {\n    allMarkdownRemark {\n        nodes {\n            frontmatter {\n                title\n                slug\n                description\n            }\n            id\n        }\n    }\n}<\/code><\/pre>\n<p>Cette requ\u00eate r\u00e9cup\u00e8re les donn\u00e9es de tous les fichiers Markdown \u00e0 l&rsquo;aide de <code>allMarkdownRemark<\/code>. Elle r\u00e9cup\u00e8re les <code>title<\/code>, <code>slug<\/code>, et <code>description<\/code> du frontmatter de chaque fichier ainsi que leur <code>id<\/code>.<\/p>\n<p>Apr\u00e8s avoir r\u00e9dig\u00e9 votre requ\u00eate, cliquez sur le bouton \u00ab Play \u00bb (une ic\u00f4ne triangulaire orient\u00e9e vers la droite) pour l&rsquo;ex\u00e9cuter. Les r\u00e9sultats s&rsquo;affichent dans la partie droite de l&rsquo;\u00e9diteur.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/10\/markdown-details-with-graphiql.png\" alt=\"Utilisation du terrain de jeu GraphiQL pour obtenir des informations de type markdown.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Utilisation du terrain de jeu GraphiQL pour obtenir des informations de type markdown.<\/figcaption><\/figure>\n<p>Vous pouvez ensuite utiliser GraphQL pour interroger les donn\u00e9es Markdown dans vos composants ou pages. Pour interroger ces donn\u00e9es dans la page <strong>blog\/index.js<\/strong>, commencez par importer <code>graphql<\/code> \u00e0 partir de <code>gatsby<\/code>. Ensuite, au bas du code JSX, ajoutez ce qui suit :<\/p>\n<pre><code class=\"language-json\">export const query = graphql`\nquery BlogList {\n    allMarkdownRemark {\n        nodes {\n            frontmatter {\n                title\n                slug\n                description\n            }\n            id\n        }\n    }\n}\n`;<\/code><\/pre>\n<p>Dans le code ci-dessus, nous utilisons la balise <code>graphql<\/code> pour cr\u00e9er une requ\u00eate GraphQL appel\u00e9e <code>query<\/code>. Voici \u00e0 quoi devrait ressembler votre fichier <strong>blog\/index.js<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">import { graphql, Link } from 'gatsby';\nimport React from 'react';\nimport Layout from '..\/..\/components\/Layout';\nimport * as styles from '..\/..\/styles\/blog.module.css';\n\nconst blog = ({ data }) =&gt; {\n    const posts = data.allMarkdownRemark.nodes;\n    return (\n        &lt;Layout&gt;\n            &lt;div className={styles.blog_cont}&gt;\n                &lt;h2&gt;Blog&lt;\/h2&gt;\n                &lt;div className={styles.blog_grid}&gt;\n                    {posts.map((post) =&gt; (\n                        &lt;Link\n                            to={`\/blog\/${post.frontmatter.slug}`}\n                            className={styles.blog_card}\n                            key={post.id}\n                        &gt;\n                            &lt;h3&gt;{post.frontmatter.title}&lt;\/h3&gt;\n                            &lt;p&gt;{post.frontmatter.description}&lt;\/p&gt;\n                        &lt;\/Link&gt;\n                    ))}\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/Layout&gt;\n    );\n};\nexport default blog;\n\nexport const query = graphql`\nquery BlogList {\n    allMarkdownRemark {\n        nodes {\n            frontmatter {\n                title\n                slug\n                description\n            }\n            id\n        }\n    }\n}\n`;<\/code><\/pre>\n<p>Dans le code ci-dessus, vous acc\u00e9dez au r\u00e9sultat de <code>query<\/code> via la propri\u00e9t\u00e9 <code>data<\/code> de votre composant. Ensuite, vous parcourez en boucle les donn\u00e9es <code>posts<\/code> \u00e0 l&rsquo;aide de la m\u00e9thode <code><a href=\"https:\/\/kinqsta.com\/fr\/blog\/typeerror-cannot-read-property-map-of-undefined-react\/\">map()<\/a><\/code> Et affichez les titres dans une liste.<\/p>\n<p>Pour \u00e9viter les erreurs, cr\u00e9ez un fichier <strong>blog.module.css<\/strong> dans le dossier <strong>styles<\/strong> et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-css\">.blog_cont h2 {\n    font-size: 40px;\n    margin-bottom: 20px;\n}\n\n.blog_grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr 1fr;\n    gap: 20px;\n}\n\n@media (max-width:700px) {\n    .blog_grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n.blog_card {\n    background-color: #bfbfbf;\n    padding: 20px;\n    border-radius: 5px;\n    color: #000;\n    transition: all .5s ease-in-out;\n}\n\n.blog_card:hover {\n    background-color: #5333ed;\n    color: #fff;\n}\n\n.blog_card h3 {\n    margin-bottom: 15px;\n}\n\n.blog_card p {\n    margin-bottom: 15px;\n}<\/code><\/pre>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/10\/blog-posts-graphql.png\" alt=\"Affichage des articles de blog r\u00e9cup\u00e9r\u00e9s via GraphQL.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Affichage des articles de blog r\u00e9cup\u00e9r\u00e9s via GraphQL.<\/figcaption><\/figure>\n<h2>Comprendre les mod\u00e8les et g\u00e9n\u00e9rer des pages dynamiques dans Gatsby avec GraphQL<\/h2>\n<p>Dans Gatsby, les mod\u00e8les et les pages dynamiques sont des concepts essentiels qui vous permettent de cr\u00e9er des sites web flexibles et ax\u00e9s sur les donn\u00e9es. Les mod\u00e8les vous permettent de d\u00e9finir la structure et la pr\u00e9sentation des pages, tandis que GraphQL vous aide \u00e0 r\u00e9cup\u00e9rer des donn\u00e9es pour alimenter ces mod\u00e8les de mani\u00e8re dynamique.<\/p>\n<h3>Cr\u00e9ation d&rsquo;un mod\u00e8le d&rsquo;article de blog<\/h3>\n<p>Imaginons que vous souhaitiez cr\u00e9er un blog dont chaque article pr\u00e9sente une structure coh\u00e9rente, avec un titre et un contenu. Vous pouvez cr\u00e9er un mod\u00e8le <code>BlogDetails<\/code> pour d\u00e9finir cette structure. Dans le dossier <strong>src<\/strong>, cr\u00e9ez un dossier <strong>templates<\/strong>, puis cr\u00e9ez un fichier <strong>blog-details.js<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport Layout from '..\/components\/Layout';\nimport * as styles from '..\/styles\/blog-details.module.css';\n\nconst BlogDetails = () =&gt; {\n\n    return (\n        &lt;Layout&gt;\n            &lt;div&gt;\n                &lt;div className={styles.blog_content}&gt;\n                    &lt;Img\n                        className={styles.blog_featured}\n                    \/&gt;\n                    &lt;h3&gt;Title&lt;\/h3&gt;\n                    &lt;div&gt;\n                        className={styles.html}\n                        dangerouslySetInnerHTML={}\n                    \/&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/Layout&gt;\n    );\n};\n\nexport default BlogDetails;<\/code><\/pre>\n<p>Dans cet exemple, le mod\u00e8le <code>BlogDetails<\/code> d\u00e9finit la structure des articles de blog individuels. Ensuite, nous allons utiliser GraphQL pour r\u00e9cup\u00e9rer les donn\u00e9es relatives \u00e0 des articles de blog sp\u00e9cifiques et les transmettre \u00e0 ce mod\u00e8le en tant qu&rsquo;\u00e9l\u00e9ments accessoires.<\/p>\n<h3>G\u00e9n\u00e9rer des pages dynamiques<\/h3>\n<p>Pour g\u00e9n\u00e9rer des pages dynamiques, cr\u00e9ez un fichier <strong>gatsby-node.js<\/strong> dans le r\u00e9pertoire racine de votre projet. Ce fichier vous permet de d\u00e9finir la mani\u00e8re dont les pages sont cr\u00e9\u00e9es.<\/p>\n<p>Dans votre fichier <strong>gatsby-node.js<\/strong>, utilisez GraphQL pour interroger les donn\u00e9es que vous souhaitez utiliser pour les pages dynamiques. Par exemple, si vous avez des articles de blog en Markdown, vous pouvez interroger leurs slugs :<\/p>\n<pre><code class=\"language-jsx\">const path = require(`path`);\n\nexports.createPages = async ({ graphql, actions }) =&gt; {\n  const { data } = await graphql(`\n    query Articles {\n      allMarkdownRemark {\n        nodes {\n          frontmatter {\n            slug\n          }\n        }\n      }\n    }\n  `);\n\n  data.allMarkdownRemark.nodes.forEach((node) =&gt; {\n    actions.createPage({\n      path: '\/blog\/' + node.frontmatter.slug,\n      component: path.resolve('.\/src\/templates\/blog-details.js'),\n      context: { slug: node.frontmatter.slug },\n    });\n  });\n};<\/code><\/pre>\n<p>Dans cet exemple, nous interrogeons les slugs de tous les articles Markdown et cr\u00e9ons des pages dynamiques pour chaque article \u00e0 l&rsquo;aide du mod\u00e8le <code>BlogDetails<\/code>. L&rsquo;objet contextuel est utilis\u00e9 pour transmettre des donn\u00e9es au mod\u00e8le. Ces donn\u00e9es (slug) sont utilis\u00e9es par le mod\u00e8le pour rechercher d&rsquo;autres donn\u00e9es qui s&rsquo;alignent sur le slug.<\/p>\n<p>Comprenons d&rsquo;abord comment fonctionne l&rsquo;optimisation des images dans Gatsby avant d&rsquo;ajouter une requ\u00eate GraphQL \u00e0 la page du mod\u00e8le.<\/p>\n<h3>Optimisation des images dans Gatsby<\/h3>\n<p>Plus t\u00f4t, vous avez install\u00e9 et configur\u00e9 les pages <code>gatsby-transformer-sharp<\/code> et <code>gatsby-plugin-sharp<\/code> ainsi que <code>gatsby-source-filesystem<\/code> pour la recherche d&rsquo;images.<\/p>\n<p>Avec ces extensions, vous pouvez interroger et optimiser les images avec GraphQL. Voici un exemple d&rsquo;interrogation et d&rsquo;affichage d&rsquo;une image optimis\u00e9e \u00e0 l&rsquo;aide de <code>gatsby-plugin-sharp<\/code>:<\/p>\n<pre><code class=\"language-json\">export const query = graphql`\n  query {\n    file(relativePath: { eq: \"example.jpg\" }) {\n      childImageSharp {\n        fluid {\n          ...GatsbyImageSharpFluid\n        }\n      }\n    }\n  }\n`;<\/code><\/pre>\n<p>Dans le code ci-dessus, vous interrogez une image nomm\u00e9e <strong>example.jpg<\/strong> \u00e0 partir de la source d&rsquo;<strong>images<\/strong> et vous utilisez la propri\u00e9t\u00e9 <code>fluid<\/code> de l&rsquo;image interrog\u00e9e pour l&rsquo;afficher avec un rendu optimis\u00e9 et responsive.<\/p>\n<p>Vous pouvez ensuite importer <code>Img<\/code> \u00e0 partir de <code>gatsby-image<\/code> pour travailler avec des images optimis\u00e9es.<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\nimport { graphql } from 'gatsby';\nimport Img from 'gatsby-image';\n\nconst ImageExample = ({ data }) =&gt; {\n  const { fluid } = data.file.childImageSharp;\n\n  return (\n    &lt;div&gt;\n      &lt;Img fluid={fluid} alt=\"Example Image\" \/&gt;\n    &lt;\/div&gt;\n  );\n};\n\nexport default ImageExample;<\/code><\/pre>\n<h3>Interrogation des pages dynamiques<\/h3>\n<p>Gatsby utilisera le mod\u00e8le sp\u00e9cifi\u00e9 pour cr\u00e9er des pages individuelles pour chaque article de blog. Ajoutons maintenant une requ\u00eate GraphQL \u00e0 la page mod\u00e8le pour r\u00e9cup\u00e9rer les donn\u00e9es bas\u00e9es sur le slug :<\/p>\n<pre><code class=\"language-jsx\">import { graphql } from 'gatsby';\nimport Img from 'gatsby-image';\nimport React from 'react';\nimport Layout from '..\/components\/Layout';\nimport * as styles from '..\/styles\/blog-details.module.css';\n\nconst BlogDetails = ({ data }) =&gt; {\n    const { html } = data.markdownRemark;\n    const { title, featureImg } = data.markdownRemark.frontmatter;\n    return (\n        &lt;Layout&gt;\n            &lt;div&gt;\n                &lt;div className={styles.blog_content}&gt;\n                    &lt;Img\n                        fluid={featureImg.childImageSharp.fluid}\n                        className={styles.blog_featured}\n                    \/&gt;\n                    &lt;h3&gt;{title}&lt;\/h3&gt;\n                    &lt;div\n                        className={styles.html}\n                        dangerouslySetInnerHTML={{ __html: html }}\n                    \/&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/Layout&gt;\n    );\n};\n\nexport default BlogDetails;\n\nexport const query = graphql`\n    query ProjectDetails($slug: String) {\n        markdownRemark(frontmatter: { slug: { eq: $slug } }) {\n            html\n            frontmatter {\n                title\n                featureImg {\n                    childImageSharp {\n                        fluid {\n                            ...GatsbyImageSharpFluid\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;<\/code><\/pre>\n<p>Dans le code ci-dessus, vous remarquerez que nous recherchons l&rsquo;image optimis\u00e9e et l&rsquo;article de blog correspondant au mot-cl\u00e9.<\/p>\n<p>Vous pouvez consulter le code source complet de ce <a href=\"https:\/\/github.com\/kinsta\/kinsta-gatsby-quickstart\" target=\"_blank\" rel=\"noopener noreferrer\">projet Gatsby sur GitHub<\/a>.<\/p>\n<h2>D\u00e9ployer des sites statiques Gatsby avec Kinsta<\/h2>\n<p>Kinsta vous permet d&rsquo;<a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">h\u00e9berger <strong>gratuitement<\/strong> jusqu&rsquo;\u00e0 100 sites web statiques<\/a>. Vous pouvez le faire en poussant votre code vers votre fournisseur Git pr\u00e9f\u00e9r\u00e9 (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) et en le d\u00e9ployant ensuite sur Kinsta.<\/p>\n<p>Une fois que votre r\u00e9pertoire est pr\u00eat, suivez les \u00e9tapes suivantes pour d\u00e9ployer votre site statique sur Kinsta :<\/p>\n<ol start=\"1\">\n<li>Connectez-vous ou cr\u00e9ez un compte pour afficher votre tableau de bord <a href=\"https:\/\/my.kinqsta.com\/?lang=fr\">MyKinsta<\/a>.<\/li>\n<li>Autorisez Kinsta avec votre fournisseur Git.<\/li>\n<li>Cliquez sur <strong>Sites statiques<\/strong> dans la colonne lat\u00e9rale gauche, puis cliquez sur <strong>Ajouter un site<\/strong>.<\/li>\n<li>S\u00e9lectionnez le d\u00e9p\u00f4t et la branche \u00e0 partir desquels vous souhaitez effectuer le d\u00e9ploiement.<\/li>\n<li>Attribuez un nom unique \u00e0 votre site.<\/li>\n<li>MyKinsta d\u00e9tectera automatiquement les param\u00e8tres de construction pour ce projet Gatsby. Vous verrez les r\u00e9glages suivants pr\u00e9-remplis :\n<ul>\n<li><strong>Commande de construction :<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Version Node :<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>R\u00e9pertoire de publication :<\/strong> <code>public<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Enfin, cliquez sur <strong>Cr\u00e9er un site<\/strong>.<\/li>\n<\/ol>\n<p>Et le tour est jou\u00e9 ! En quelques secondes, vous disposez d&rsquo;un site d\u00e9ploy\u00e9. Un lien est fourni pour acc\u00e9der \u00e0 la version d\u00e9ploy\u00e9e de votre site. Vous pourrez par la suite ajouter votre <a href=\"https:\/\/docs.sevalla.com\/applications\/domains\">domaine personnalis\u00e9<\/a> et votre <a href=\"https:\/\/docs.sevalla.com\/applications\/domains#install-a-custom-ssl-certificate\">certificat SSL<\/a> si vous le souhaitez.<\/p>\n<p>Comme alternative \u00e0 l&rsquo;h\u00e9bergement de site statique, vous pouvez opter pour le d\u00e9ploiement de votre site statique avec l&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;application<\/a> de Kinsta, qui offre une plus grande flexibilit\u00e9 d&rsquo;h\u00e9bergement, une plus large gamme d&rsquo;avantages et l&rsquo;acc\u00e8s \u00e0 des fonctionnalit\u00e9s plus robustes. Par exemple, l&rsquo;\u00e9volutivit\u00e9, le d\u00e9ploiement personnalis\u00e9 \u00e0 l&rsquo;aide d&rsquo;un fichier Docker et des <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">analyses compl\u00e8tes<\/a> englobant des donn\u00e9es en temps r\u00e9el et historiques.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Ce guide couvre les principes fondamentaux de l&rsquo;approvisionnement en donn\u00e9es, du routage, du stylisme, de l&rsquo;optimisation des images, des extensions, du d\u00e9ploiement et bien plus encore.<\/p>\n<p>La flexibilit\u00e9, la vitesse et le riche \u00e9cosyst\u00e8me de Gatsby en font un choix puissant pour la cr\u00e9ation de sites web statiques. Que vous cr\u00e9iez un blog personnel, un site de portfolio ou un site d&rsquo;entreprise, Gatsby vous le fournit.<\/p>\n<p><em>Il est maintenant temps de mettre vos connaissances en pratique et de commencer \u00e0 cr\u00e9er votre propre site Gatsby. Avez-vous utilis\u00e9 Gatsby pour cr\u00e9er quelque chose ? N&rsquo;h\u00e9sitez pas \u00e0 partager vos projets et vos exp\u00e9riences avec nous dans la section des commentaires ci-dessous.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les sites web statiques ont fait leur retour ces derni\u00e8res ann\u00e9es gr\u00e2ce \u00e0 leur rapidit\u00e9, leur s\u00e9curit\u00e9 et leur simplicit\u00e9. L&rsquo;un des principaux outils de cr\u00e9ation &#8230;<\/p>\n","protected":false},"author":287,"featured_media":74015,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[979,1011],"class_list":["post-74014","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-frameworks-javascript","topic-generateurs-sites-statiques"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment construire et d\u00e9ployer des sites statiques avec Gatsby et Kinsta - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l&#039;\u00e9clair, de la configuration jusqu&#039;au d\u00e9ploiement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Un guide complet pour construire des sites statiques avec Gatsby\" \/>\n<meta property=\"og:description\" content=\"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l&#039;\u00e9clair, de la configuration jusqu&#039;au d\u00e9ploiement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-30T12:33:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-31T08:54:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l&#039;\u00e9clair, de la configuration jusqu&#039;au d\u00e9ploiement.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Un guide complet pour construire des sites statiques avec Gatsby\",\"datePublished\":\"2023-10-30T12:33:33+00:00\",\"dateModified\":\"2023-10-31T08:54:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\"},\"wordCount\":3849,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\",\"name\":\"Comment construire et d\u00e9ployer des sites statiques avec Gatsby et Kinsta - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\",\"datePublished\":\"2023-10-30T12:33:33+00:00\",\"dateModified\":\"2023-10-31T08:54:41+00:00\",\"description\":\"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l'\u00e9clair, de la configuration jusqu'au d\u00e9ploiement.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"G\u00e9n\u00e9rateurs de sites statiques\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/generateurs-sites-statiques\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Un guide complet pour construire des sites statiques avec Gatsby\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment construire et d\u00e9ployer des sites statiques avec Gatsby et Kinsta - Kinsta\u00ae","description":"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l'\u00e9clair, de la configuration jusqu'au d\u00e9ploiement.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/","og_locale":"fr_FR","og_type":"article","og_title":"Un guide complet pour construire des sites statiques avec Gatsby","og_description":"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l'\u00e9clair, de la configuration jusqu'au d\u00e9ploiement.","og_url":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-10-30T12:33:33+00:00","article_modified_time":"2023-10-31T08:54:41+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l'\u00e9clair, de la configuration jusqu'au d\u00e9ploiement.","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"22 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Un guide complet pour construire des sites statiques avec Gatsby","datePublished":"2023-10-30T12:33:33+00:00","dateModified":"2023-10-31T08:54:41+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/"},"wordCount":3849,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/","url":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/","name":"Comment construire et d\u00e9ployer des sites statiques avec Gatsby et Kinsta - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","datePublished":"2023-10-30T12:33:33+00:00","dateModified":"2023-10-31T08:54:41+00:00","description":"D\u00e9verrouillez la puissance de Gatsby gr\u00e2ce \u00e0 notre guide complet ! Apprenez \u00e0 construire des sites web statiques rapides comme l'\u00e9clair, de la configuration jusqu'au d\u00e9ploiement.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/gatsby\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/10\/gatsby.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/gatsby\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"G\u00e9n\u00e9rateurs de sites statiques","item":"https:\/\/kinqsta.com\/fr\/sujets\/generateurs-sites-statiques\/"},{"@type":"ListItem","position":3,"name":"Un guide complet pour construire des sites statiques avec Gatsby"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74014","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=74014"}],"version-history":[{"count":7,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74014\/revisions"}],"predecessor-version":[{"id":74027,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74014\/revisions\/74027"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/translations\/es"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74014\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/74015"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=74014"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=74014"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=74014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}