{"id":68568,"date":"2023-04-27T11:34:11","date_gmt":"2023-04-27T10:34:11","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=68568&#038;preview=true&#038;preview_id=68568"},"modified":"2023-10-27T09:37:35","modified_gmt":"2023-10-27T08:37:35","slug":"eleventy","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/","title":{"rendered":"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)"},"content":{"rendered":"<p>Avec l&rsquo;essor des <a href=\"https:\/\/kinsta.com\/fr\/blog\/generateurs-de-sites-statiques\/\">g\u00e9n\u00e9rateurs de sites statiques<\/a> (Static Site Generator ou SSG) comme Eleventy, la cr\u00e9ation d&rsquo;un <a href=\"https:\/\/kinsta.com\/fr\/blog\/site-statique\/\">site web statique<\/a> \u00e9l\u00e9gant et efficace n&rsquo;a jamais \u00e9t\u00e9 aussi facile.<\/p>\n<p>Dans cet article, nous verrons comment utiliser Eleventy pour cr\u00e9er un site web statique de portfolio \u00e0 la fois \u00e9tonnant et fonctionnel, sans avoir besoin d&rsquo;un langage c\u00f4t\u00e9 serveur ou d&rsquo;une base de donn\u00e9es.<\/p>\n<p>Vous apprendrez \u00e9galement comment d\u00e9ployer votre site web statique directement depuis votre d\u00e9p\u00f4t GitHub vers l&rsquo;<a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">h\u00e9bergement de site statique<\/a> de Kinsta, obtenant ainsi rapidement la production de votre site web sur un domaine gratuit <em>.kinsta.page<\/em>.<\/p>\n<p>Voici une <a href=\"http:\/\/eleventy-portfolio-h9ahf.kinsta.page\/\">d\u00e9monstration en direct<\/a> du site de portfolio statique que vous construirez avec Eleventy.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/11ty-portfolio-static-site.jpg\" alt=\"Site de portfolio statique et \u00e9l\u00e9gant\" width=\"1600\" height=\"788\"><figcaption class=\"wp-caption-text\">Site de portfolio statique et \u00e9l\u00e9gant<\/figcaption><\/figure>\n<p>Vous pouvez acc\u00e9der au <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9p\u00f4t GitHub<\/a> de ce projet si vous souhaitez l&rsquo;examiner de plus pr\u00e8s.<\/p>\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>Qu&rsquo;est-ce qu&rsquo;Eleventy ?<\/h2>\n<p>Eleventy, \u00e9galement connu sous le nom de 11ty, est un g\u00e9n\u00e9rateur de sites statiques qui cr\u00e9e des sites web aliment\u00e9s par <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-le-html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleurs-pratiques-css\/\">CSS<\/a> et <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> sans avoir besoin de bases de donn\u00e9es ni de langages de programmation <a href=\"https:\/\/kinsta.com\/fr\/blog\/backend-vs-frontend\/\">backend<\/a>.<\/p>\n<p>Eleventy est connu pour sa simplicit\u00e9 et sa flexibilit\u00e9, car il ne vous oblige pas \u00e0 utiliser un seul langage de mod\u00e8le ou un seul framework. Il prend en charge plus de 10 langages de mod\u00e8les et vous permet m\u00eame d&rsquo;en utiliser autant que vous le souhaitez dans un m\u00eame projet :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/11ty-template-languages.jpg\" alt=\"Onze langages de mod\u00e8les\" width=\"1600\" height=\"226\"><figcaption class=\"wp-caption-text\">Onze langages de mod\u00e8les<\/figcaption><\/figure>\n<p>Eleventy, comme la plupart des SSG, vous permet de construire le contenu de votre site statique en utilisant des composants r\u00e9utilisables plut\u00f4t que de cr\u00e9er des documents HTML complets pour chaque page.<\/p>\n\n<h2>Comment installer Eleventy<\/h2>\n<p>Il est facile d&rsquo;installer Eleventy. Voici comment proc\u00e9der :<\/p>\n<ol start=\"1\">\n<li>Assurez-vous que <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/\">Node.js<\/a> est install\u00e9 sur votre ordinateur. Vous pouvez le v\u00e9rifier en lan\u00e7ant la commande <code>node -v<\/code> dans votre terminal. Vous n&rsquo;\u00eates pas disponible ? Voici <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-installer-node-js\/\">comment installer Node.js<\/a> sur votre ordinateur.<\/li>\n<li>Cr\u00e9ez un nouveau r\u00e9pertoire pour votre projet.<\/li>\n<li>Ouvrez votre terminal et ex\u00e9cutez la commande <code>npm init -y<\/code> dans le r\u00e9pertoire de votre projet pour initialiser un nouveau projet Node.js, en cr\u00e9ant un fichier <strong>package.json<\/strong> avec les r\u00e9glages par d\u00e9faut.<\/li>\n<li>Ex\u00e9cutez la commande <code>npm install @11ty\/eleventy --save-dev<\/code> pour installer le package en tant que d\u00e9pendance de d\u00e9veloppement dans votre projet.<\/li>\n<li>Voil\u00e0, c&rsquo;est fait ! Vous pouvez maintenant lancer Eleventy en ex\u00e9cutant la commande <code>npx @11ty\/eleventy<\/code> dans le r\u00e9pertoire de votre projet. Cette commande g\u00e9n\u00e9rera les fichiers de votre site et les placera dans un r\u00e9pertoire <strong>_site<\/strong> (ou dans le r\u00e9pertoire que vous avez configur\u00e9) dans le dossier de votre projet.<\/li>\n<\/ol>\n<p><strong>Note :<\/strong> Lorsque vous ex\u00e9cutez la commande <code>npx @11ty\/eleventy<\/code>. Vous obtiendrez ce r\u00e9sultat :<\/p>\n<pre><code class=\"language-bash\">[11ty] Wrote 0 files in 0.01 seconds (v2.0.0)<\/code><\/pre>\n<p>Ici, 0 fichier est \u00e9crit car il n&rsquo;y a pas de mod\u00e8les dans le dossier de votre projet.<\/p>\n<h2>Commandes et configuration d&rsquo;Eleventy<\/h2>\n<p>Vous avez maintenant cr\u00e9\u00e9 votre projet Eleventy, mais ce n&rsquo;est pas tout. Vous devez cr\u00e9er quelques configurations et conna\u00eetre quelques commandes de base pour votre site statique qui peut \u00eatre servi au navigateur.<\/p>\n<h3>Commandes Eleventy<\/h3>\n<p>Voici quelques-unes des principales commandes d&rsquo;Eleventy que vous devez conna\u00eetre :<\/p>\n<ul>\n<li><code>npx @11ty\/eleventy<\/code>: Cette commande est utilis\u00e9e pour construire votre site et produire le r\u00e9sultat dans le dossier <strong>_site<\/strong> (ou tout autre dossier que vous avez configur\u00e9 comme r\u00e9pertoire de sortie).<\/li>\n<li><code>npx @11ty\/eleventy --serve<\/code>: Cette commande d\u00e9marre un serveur local afin que vous puissiez pr\u00e9visualiser votre site dans votre navigateur. Lorsque vous apportez des modifications \u00e0 votre site, votre projet est automatiquement reconstruit et mis \u00e0 jour dans votre navigateur.<\/li>\n<li><code>npx @11ty\/eleventy --serve --port=8081<\/code>: Cette commande d\u00e9marre le serveur Eleventy et sp\u00e9cifie un port personnalis\u00e9 sur lequel le serveur \u00e9coutera.<\/li>\n<li><code>npx @11ty\/eleventy --watch<\/code>: Cette commande surveille les modifications apport\u00e9es aux fichiers de votre projet et reconstruit automatiquement votre site si n\u00e9cessaire.<\/li>\n<\/ul>\n<p>Vous n&rsquo;avez pas besoin de m\u00e9moriser ces commandes car vous pouvez les ajouter aux commandes g\u00e9n\u00e9rales dans l&rsquo;objet scripts de votre fichier package.json :<\/p>\n<pre><code class=\"language-bash\">\"scripts\": {\n    \"build\": \"npx @11ty\/eleventy\",\n    \"start\": \"npx @11ty\/eleventy --serve\",\n    \"watch\": \"npx @11ty\/eleventy --watch\"\n  },<\/code><\/pre>\n<p>Vous pouvez maintenant utiliser <code>npm start<\/code> pour servir votre application au lieu de <code>npx @11ty\/eleventy --serve<\/code>, et vous pouvez \u00e9galement ex\u00e9cuter <code>npm run build<\/code> au lieu de <code>npx @11ty\/eleventy<\/code>.<\/p>\n<h3>Comment configurer votre site statique avec Eleventy<\/h3>\n<p>Eleventy est \u00ab zero-config \u00bb par d\u00e9faut et dispose d&rsquo;options de configuration flexibles. Voici quelques options de configuration cl\u00e9s que vous devriez conna\u00eetre :<\/p>\n<ul>\n<li><strong>input :<\/strong> Cette option vous permet de sp\u00e9cifier le r\u00e9pertoire de vos fichiers de projet. La meilleure pratique est d&rsquo;utiliser <strong>src<\/strong>.<\/li>\n<li><strong>output :<\/strong> Cette option vous permet de sp\u00e9cifier le r\u00e9pertoire dans lequel votre site construit doit \u00eatre modifi\u00e9. Par d\u00e9faut, Eleventy produit le site dans le dossier <strong>_site<\/strong>. (Il n&rsquo;est pas n\u00e9cessaire de modifier ceci).<\/li>\n<li><strong>templateFormats :<\/strong> Cette option vous permet de sp\u00e9cifier quelles extensions de fichiers doivent \u00eatre trait\u00e9es comme mod\u00e8les. Par d\u00e9faut, Eleventy traite les fichiers <strong>.html<\/strong>, <strong>.njk<\/strong> et <strong>.md<\/strong> comme des mod\u00e8les.<\/li>\n<\/ul>\n<p>Il ne s&rsquo;agit l\u00e0 que de quelques commandes et options de configuration disponibles dans Eleventy. Pour configurer votre projet Eleventy, cr\u00e9ez un fichier <strong>.eleventy.js<\/strong> \u00e0 la racine de votre projet. Collez ensuite ce code dans le fichier pour donner \u00e0 votre projet une structure qui inclut le r\u00e9pertoire input :<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    return {\n        dir: {\n            input: 'src',\n        },\n    };\n};<\/code><\/pre>\n<p><strong>Remarque :<\/strong> <code>eleventyConfig<\/code> est transmis en tant qu&rsquo;argument, fournissant plus d&rsquo;options de configuration qui seront utilis\u00e9es plus tard dans ce projet.<\/p>\n<h2>Comment pr\u00e9visualiser un site Eleventy<\/h2>\n<p>Vous connaissez maintenant quelques commandes cl\u00e9s qui peuvent \u00eatre utilis\u00e9es pour pr\u00e9visualiser votre site Eleventy statique, mais lorsque vous ex\u00e9cutez la commande <code>npm run build<\/code> (<code>npx @11ty\/eleventy<\/code>), rien n&rsquo;est servi. C&rsquo;est parce que vous n&rsquo;avez pas de fichier de mod\u00e8le.<\/p>\n<p>Vous pouvez cr\u00e9er un dossier <strong>src<\/strong> dans le dossier racine de votre projet, puis cr\u00e9er des fichiers mod\u00e8les tels que <strong>index.html<\/strong> ou utiliser votre langage mod\u00e8le pr\u00e9f\u00e9r\u00e9 pour repr\u00e9senter la page d&rsquo;accueil :<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;title&gt;Eleventy Static Site&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        Hello World!\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Si vous ex\u00e9cutez maintenant la commande <code>npm run build<\/code>, un dossier <strong>_site<\/strong> sera cr\u00e9\u00e9 avec le fichier statique g\u00e9n\u00e9r\u00e9. Vous voudrez certainement que celui-ci soit servi \u00e0 votre navigateur et activer certaines fonctionnalit\u00e9s de rechargement \u00e0 chaud. Ceci est possible en utilisant la commande <code>npx @11ty\/eleventy --serve<\/code> que vous avez maintenant configur\u00e9e comme <code>npm start<\/code>. Cela servira votre site sur http:\/\/localhost:8080\/.<\/p>\n<h2>Comment cr\u00e9er un site web statique de portfolio avec Eleventy<\/h2>\n<p>Vous savez maintenant comment cr\u00e9er un site statique avec Eleventy. Cr\u00e9ons le projet de portfolio.<\/p>\n<p>Vous pouvez cr\u00e9er un nouveau projet Eleventy \u00e0 partir de z\u00e9ro, ou utiliser <a href=\"https:\/\/github.com\/olawanlejoel\/11ty-portfolio-starter\">nos fichiers de d\u00e9marrage<\/a> qui incluent les images, le CSS et le contenu de ce projet pour vous aider \u00e0 acc\u00e9l\u00e9rer les choses. Dans GitHub, s\u00e9lectionnez <strong>Utiliser ce mod\u00e8le<\/strong> &gt; <strong>Cr\u00e9er un nouveau d\u00e9p\u00f4t<\/strong> pour copier ces actifs et les fichiers de configuration initiaux dans un nouveau d\u00e9p\u00f4t qui vous est propre, puis t\u00e9l\u00e9chargez-les sur votre machine locale.<\/p>\n<p>Votre projet aura la structure suivante :<\/p>\n<pre><code class=\"language-bash\">\u251c\u2500\u2500 node_modules\/\n\u251c\u2500\u2500 public\/\n\u251c\u2500\u2500 src\/\n     \u251c\u2500\u2500 _includes\n     \u251c\u2500\u2500 layouts\n     \u251c\u2500\u2500 assets\n     \u251c\u2500\u2500 css\n     \u251c\u2500\u2500 projects\n     \u2514\u2500\u2500 index.njk\n\u251c\u2500\u2500 .eleventy.js\n\u251c\u2500\u2500 .gitignore\n\u251c\u2500\u2500 package.lock.json\n\u2514\u2500\u2500 package.json<\/code><\/pre>\n<h3>Comment utiliser les mod\u00e8les dans Eleventy<\/h3>\n<p>Lorsque vous utilisez Eleventy, il existe trois principaux types de mod\u00e8les que vous devez comprendre. Ces mod\u00e8les peuvent \u00eatre cr\u00e9\u00e9s avec Nunjucks, qui vous permet de d\u00e9finir des variables, des boucles, des conditions et d&rsquo;autres \u00e9l\u00e9ments logiques qui peuvent \u00eatre utilis\u00e9s pour g\u00e9n\u00e9rer dynamiquement le contenu de la page.<\/p>\n<ul>\n<li><strong>Mod\u00e8les de page :<\/strong> Ils d\u00e9finissent la structure et le contenu des pages individuelles de votre site web.<\/li>\n<li><strong>Mod\u00e8les de mise en page :<\/strong> Ils d\u00e9finissent la structure globale et la conception des pages de votre site web. Ils comprennent g\u00e9n\u00e9ralement des \u00e9l\u00e9ments communs tels que les en-t\u00eates, les pieds de page, les menus de navigation et les barres lat\u00e9rales, qui sont partag\u00e9s par plusieurs pages.<\/li>\n<li><strong>Mod\u00e8les partiels :<\/strong> Ils d\u00e9finissent de petites sections r\u00e9utilisables du balisage HTML de votre site web. Ils sont utilis\u00e9s pour d\u00e9finir des \u00e9l\u00e9ments communs tels que les en-t\u00eates, les pieds de page, les menus de navigation et les barres lat\u00e9rales, qui peuvent \u00eatre inclus dans les mod\u00e8les de mise en page et de page.<\/li>\n<\/ul>\n<p>Maintenant que vous avez compris chacun de ces types de mod\u00e8les. Cr\u00e9ons des mod\u00e8les pour le site Web statique du portfolio.<\/p>\n<h4>Comment cr\u00e9er des mises en page dans Eleventy<\/h4>\n<p>Dans le r\u00e9pertoire <strong>src<\/strong>, cr\u00e9ez un r\u00e9pertoire <strong>_includes<\/strong>. Il contiendra toutes nos mises en page et tous les \u00e9l\u00e9ments partiels.<\/p>\n<p>Vous pouvez cr\u00e9er un dossier <strong>layouts<\/strong> pour organiser tous vos mod\u00e8les, en utilisant votre langage de mise en page pr\u00e9f\u00e9r\u00e9, tel que Nunjucks.<\/p>\n<p>Cr\u00e9ez un fichier <strong>base.njk<\/strong> qui contiendra votre mise en page g\u00e9n\u00e9rale pour toutes vos pages.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {{ content | safe }}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Dans le code ci-dessus, un balisage HTML g\u00e9n\u00e9ral est cr\u00e9\u00e9 et Font Awesome est inclus \u00e0 partir d&rsquo;un CDN afin que vous puissiez avoir acc\u00e8s \u00e0 ses ic\u00f4nes. De plus, la variable content est pass\u00e9e afin que tout le contenu de n&rsquo;importe quelle page utilisant cette mise en page soit inclus.<\/p>\n<p>Mais ce n&rsquo;est pas tout. Votre mise en page comportera des sections qui appara\u00eetront sur chaque page, telles que la barre de navigation et le pied de page. Cr\u00e9ons des partiels pour chacune de ces sections.<\/p>\n<h4>Comment utiliser les partiels dans Eleventy<\/h4>\n<p>Tous les partiels sont stock\u00e9s dans le r\u00e9pertoire <strong>_includes<\/strong>. Pour une bonne organisation, vous pouvez les stocker dans un dossier <strong>components<\/strong> au sein du r\u00e9pertoire <strong>_includes<\/strong>. Cr\u00e9ez un fichier <strong>navbar.njk<\/strong> et stockez le code ci-dessous pour les \u00e9l\u00e9ments partiels de votre barre de navigation.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"nav-container\"&gt;\n    &lt;div class=\"logo\"&gt;\n        &lt;a href=\"\/\"&gt;\n            J.\n        &lt;\/a&gt;\n    &lt;\/div&gt;\n    &lt;div class=\"nav\"&gt;\n        &lt;a href=\"\/projects\" class=\"link\"&gt;\n            Projects\n        &lt;\/a&gt;\n        &lt;a href=\"https:\/\/docs.google.com\/document\/d\/10ZosQ38Z3804KYPcb_aZp9bceoXK-q3GrkHjYshqIRE\/edit?usp=sharing\" class=\"cta-btn\"&gt;Resume&lt;\/a&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Cr\u00e9ez ensuite un fichier <strong>footer.njk<\/strong> pour vos \u00e9l\u00e9ments partiels de pied de page :<\/p>\n<pre><code class=\"language-html\">&lt;hr \/&gt;\n&lt;div class=\"footer-container\"&gt;\n    &lt;p&gt;\u00a9 2023 Joel's Portfolio&lt;\/p&gt;\n    &lt;div class=\"social_icons\"&gt;\n        &lt;a\n            href=\"https:\/\/twitter.com\/olawanle_joel\"\n            aria-label=\"Twitter\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n        &lt;a\n            href=\"https:\/\/github.com\/olawanlejoel\"\n            aria-label=\"GitHub\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n        &lt;a\n            href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"\n            aria-label=\"LinkedIn\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Ajoutez ces \u00e9l\u00e9ments partiels \u00e0 votre mod\u00e8le de page ou de mise en page \u00e0 l&rsquo;aide de l&rsquo;instruction <code>{% include %}<\/code>. Voici \u00e0 quoi ressemblera le mod\u00e8le <strong>layouts\/base.njk<\/strong> quand vous aurez inclus les \u00e9l\u00e9ments partiels Navbar et Footer :<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {% include \"components\/navbar.njk\" %}\n                {{ content | safe }}\n            {% include \"components\/footer.njk\" %}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cutez la commande <code>npm start<\/code>, cette mise en page n&rsquo;appara\u00eet pas car elle n&rsquo;a pas \u00e9t\u00e9 ajout\u00e9e \u00e0 un mod\u00e8le de page. Cr\u00e9ez un mod\u00e8le de page et ajoutez cette mise en page.<\/p>\n<h4>Comment cr\u00e9er des mod\u00e8les de page dans Eleventy<\/h4>\n<p>Dans votre dossier <strong>src<\/strong>, cr\u00e9ez un fichier <strong>index.njk<\/strong> qui servira de page d&rsquo;accueil \u00e0 votre site de portfolio. Cette page utilisera la mise en page de base :<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Home\n---\n&lt;h1&gt; This is the {{title}} Page. &lt;\/h1&gt;<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cutez la commande <code>npm start<\/code>, votre site statique se chargera sur <strong>http:\/\/localhost:8080\/.<\/strong> Voici \u00e0 quoi ressemblera la sortie :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-home-page.jpg\" alt=\"Mod\u00e8le de page sans style\" width=\"1600\" height=\"470\"><figcaption class=\"wp-caption-text\">Mod\u00e8le de page sans style<\/figcaption><\/figure>\n<h3>Comment utiliser le CSS et les images dans Eleventy<\/h3>\n<p>Vous remarquerez que dans le fichier <strong>layouts\/base.njk<\/strong>, un fichier CSS est li\u00e9 pour styliser la page du portfolio, mais quand le site se charge, les styles CSS ne sont pas affect\u00e9s parce que le fichier CSS n&rsquo;est pas ajout\u00e9 au dossier <strong>_site<\/strong>.<\/p>\n<p>Pour que le CSS fonctionne, configurez-le dans votre fichier<strong> .eleventy.js<\/strong> \u00e0 l&rsquo;aide du param\u00e8tre <code>eleventyConfig<\/code> Cela permet \u00e0 Eleventy de savoir que le(s) fichier(s) CSS existe(nt) et de surveiller les \u00e9ventuelles modifications apport\u00e9es au fichier CSS.<\/p>\n<p>Dans le dossier <strong>src<\/strong>, vous pouvez cr\u00e9er un dossier <strong>css<\/strong> pour stocker tous les fichiers CSS que vous utiliserez dans votre projet, mais pour cet article, vous pouvez utiliser un seul fichier CSS &#8211; <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\/blob\/starter\/src\/css\/global.css\" target=\"_blank\" rel=\"noopener noreferrer\">global.css<\/a>. Vous pouvez ensuite configurer le dossier <strong>css<\/strong> de mani\u00e8re \u00e0 ce qu&rsquo;il configure tous les fichiers qui s&rsquo;y trouvent :<\/p>\n<pre><code class=\"language-js\">eleventyConfig.addPassthroughCopy('src\/css');\neleventyConfig.addWatchTarget('src\/css');<\/code><\/pre>\n<p>Il en va de m\u00eame pour les images. Si vous ajoutez des images dans votre page, elles ne s&rsquo;afficheront pas tant que vous n&rsquo;aurez pas configur\u00e9 le dossier dans lequel vos images sont stock\u00e9es. Cr\u00e9ez un dossier <strong>assets<\/strong> pour stocker toutes nos images et configurez le dossier <strong>assets<\/strong>.<\/p>\n<pre><code class=\"language-js\">eleventyConfig.addPassthroughCopy('src\/assets');<\/code><\/pre>\n<p>Voici \u00e0 quoi ressemblera votre fichier de configuration :<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    eleventyConfig.addPassthroughCopy('src\/assets');\n    eleventyConfig.addPassthroughCopy('src\/css');\n    eleventyConfig.addWatchTarget('src\/css');\n\n    return {\n        dir: {\n            input: 'src',\n        },\n    };\n};<\/code><\/pre>\n<p>Lorsque vous lancez <code>npm start<\/code>, le style CSS fonctionnera et votre page d&rsquo;accueil ressemblera \u00e0 ceci :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-home-page-with-css.jpg\" alt=\"Apparence du mod\u00e8le apr\u00e8s l'ajout de la mise en page\" width=\"1600\" height=\"436\"><figcaption class=\"wp-caption-text\">Apparence du mod\u00e8le apr\u00e8s l&rsquo;ajout de la mise en page<\/figcaption><\/figure>\n<h2>Cr\u00e9ation de partiels et ajout \u00e0 la page d&rsquo;accueil<\/h2>\n<p>Vous avez maintenant r\u00e9ussi \u00e0 cr\u00e9er une mise en page et \u00e0 l&rsquo;ajouter \u00e0 votre page d&rsquo;accueil (<strong>index.njk<\/strong>). Personnalisons la page d&rsquo;accueil pour qu&rsquo;elle contienne des informations vous concernant, telles que des informations compl\u00e9mentaires sur vous, vos comp\u00e9tences et vos coordonn\u00e9es.<\/p>\n<p>Vous pouvez d\u00e9cider d&rsquo;ajouter votre code et votre balisage directement au mod\u00e8le <strong>index.njk<\/strong>, mais cr\u00e9ons des partielles individuelles pour le h\u00e9ros, \u00e0 propos, les comp\u00e9tences et les informations de contact.<\/p>\n<h3>Les partiels Hero<\/h3>\n<p>Il s&rsquo;agit de la premi\u00e8re section en dessous de la barre de navigation, dont l&rsquo;objectif principal est de donner aux utilisateurs une id\u00e9e du contenu du site web.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"hero-container\"&gt;\n    &lt;img src='assets\/profile.jpeg' class=\"profile-img\" alt=\"Joe's personal headshot\" \/&gt;\n    &lt;div class=\"hero-text\"&gt;\n        &lt;h1&gt;Hey, I'm Joe \ud83d\udc4b&lt;\/h1&gt;\n        &lt;p&gt;\n            I'm a software developer based in Lagos, Nigeria. I specialize in building (and occasionally designing) exceptional websites, applications, and everything in between.\n        &lt;\/p&gt;\n        &lt;div class=\"social-icons\"&gt;\n            &lt;a href=\"https:\/\/twitter.com\/olawanle_joel\"&gt;\n                &lt;i class=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n            &lt;a href=\"https:\/\/github.com\/olawanlejoel\"&gt;\n                &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n            &lt;a href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"&gt;\n                &lt;i class=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Quelques d\u00e9tails vous concernant sont inclus dans le code ci-dessus, ainsi que quelques ic\u00f4nes sociales pour connecter des liens vers vos profils de r\u00e9seaux sociaux.<\/p>\n<p>Les \u00e9l\u00e9ments partiels Hero devraient ressembler \u00e0 ceci :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-hero-partials.jpg\" alt=\"Affichage Hero\" width=\"1600\" height=\"680\"><figcaption class=\"wp-caption-text\">Affichage Hero<\/figcaption><\/figure>\n<p>Vous pouvez ajouter du contenu \u00e0 la section Hero, modifier les styles dans le fichier <strong>css\/globals.css<\/strong> ou m\u00eame cr\u00e9er votre propre version de cette section.<\/p>\n<h3>Les partiels \u00c0 propos<\/h3>\n<p>La section \u00ab \u00c0 propos \u00bb donne aux visiteurs de votre portfolio plus d&rsquo;informations sur vous, en autant de paragraphes que vous le souhaitez. Cette section peut faire l&rsquo;objet d&rsquo;une page s\u00e9par\u00e9e si vous avez plus d&rsquo;informations \u00e0 communiquer.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"about-container\"&gt;\n    &lt;h2&gt;About Me&lt;\/h2&gt;\n    &lt;div class=\"flex-about\"&gt;\n        &lt;div class=\"about-text\"&gt;\n            &lt;p&gt;\n                As a developer, I have always been passionate about creating elegant and effective solutions to complex problems. I have a strong foundation in software development, with a focus on web technologies such as HTML, CSS, and JavaScript. I enjoy working on both the front-end and back-end of applications, and I am always looking for ways to optimize performance, improve user experience, and ensure the highest level of code quality.\n            &lt;\/p&gt;\n            &lt;p&gt;Throughout my career, I have worked on a wide range of projects, from simple static websites to complex enterprise-level applications. I am experienced in working with a variety of development tools and frameworks, including React, Angular, Vue.js, Node.js, and Laravel. I am always eager to learn and explore new technologies, and I am constantly seeking out opportunities to improve my skills and knowledge.&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"about-img\"&gt;\n            &lt;Image src='\/assets\/about.jpeg' class=\"profile-img\" alt=\"Joe and animal relaxing and having fun\" \/&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Le code contient des informations sur vous (une image et du texte). Voici \u00e0 quoi est cens\u00e9e ressembler la section \u00ab \u00c0 propos \u00bb :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-about-partials.jpg\" alt=\"Partiels \u00c0 propos\" width=\"1600\" height=\"704\"><figcaption class=\"wp-caption-text\">Partiels \u00c0 propos<\/figcaption><\/figure>\n<h3>Partiels Comp\u00e9tences<\/h3>\n<p>Cette section est utilis\u00e9e pour afficher les technologies que vous utilisez ou que vous aimez utiliser.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"skills-container\"&gt;\n    &lt;h2&gt;Skills&lt;\/h2&gt;\n    &lt;div class=\"grid-skills\"&gt;\n        &lt;div class=\"skill-card html\"&gt;\n            &lt;i class=\"fa-brands fa-html5 html-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;HTML&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card css\"&gt;\n            &lt;i class=\"fa-brands fa-css3-alt css-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;CSS&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card js\"&gt;\n            &lt;i class=\"fa-brands fa-js-square js-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;JavaScript&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card react\"&gt;\n            &lt;i class=\"fa-brands fa-react react-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;React&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card node\"&gt;\n            &lt;i class=\"fa-brands fa-node-js node-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;Node&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card python\"&gt;\n            &lt;i class=\"fa-brands fa-python python-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;Python&lt;\/p&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Le code ci-dessus cr\u00e9e une carte qui contient l&rsquo;ic\u00f4ne de la technologie et le nom de chaque comp\u00e9tence. Vous pouvez \u00e9galement ajouter d&rsquo;autres styles et modifier le code pour le rendre plus attrayant et distinct. Voici \u00e0 quoi est cens\u00e9e ressembler la section des comp\u00e9tences :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-skills-partials.jpg\" alt=\"Partiels Comp\u00e9tences\" width=\"1600\" height=\"446\"><figcaption class=\"wp-caption-text\">Partiels Comp\u00e9tences<\/figcaption><\/figure>\n<h3>Partiels contact<\/h3>\n<p>Comme il s&rsquo;agit d&rsquo;un portfolio, vous devez ajouter un moyen pour les clients\/employeurs potentiels de vous contacter. L&rsquo;un des moyens serait d&rsquo;ajouter un e-mail.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"contact-container\"&gt;\n    &lt;h2&gt;Get In Touch&lt;\/h2&gt;\n    &lt;p&gt;If you want us to work together, have any question or want me to speak at your event, my inbox is always open. Whether just want to say hi, I'll try my best to get back to you! Cheers!&lt;\/p&gt;\n    &lt;a href=\"mailto:joelolawanle@kinsta.com\" class='cta-btn'&gt;Say Hello&lt;\/a&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Remplacez l&rsquo;adresse e-mail de la balise <code>a<\/code> par la v\u00f4tre afin que le bouton lance une application de messagerie permettant aux internautes de vous envoyer un message.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-contact-partials.jpg\" alt=\"Partiels contacts\" width=\"1600\" height=\"318\"><figcaption class=\"wp-caption-text\">Partiels contacts<\/figcaption><\/figure>\n<p>Vous avez cr\u00e9\u00e9 avec succ\u00e8s tous les \u00e9l\u00e9ments partiels de votre page d&rsquo;accueil. Vous devez maintenant les inclure dans votre fichier <strong>index.njk<\/strong> pour qu&rsquo;ils s&rsquo;affichent sur la page d&rsquo;accueil :<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Home\n---\n{% include \"components\/hero.njk\" %}\n{% include \"components\/about.njk\" %}\n{% include \"components\/skills.njk\" %}\n{% include \"components\/contact.njk\" %}<\/code><\/pre>\n<p>Lorsque vous ex\u00e9cutez la commande <code>npm start<\/code>, votre page d&rsquo;accueil affichera tout les partiels ajout\u00e9s en cons\u00e9quence.<\/p>\n<h3>Comment utiliser les collections dans Eleventy<\/h3>\n<p>Dans Eleventy, les collections sont un moyen de regrouper du contenu similaire afin de g\u00e9n\u00e9rer des pages bas\u00e9es sur ce contenu. Par exemple, si vous avez des fichiers markdown de contenu similaire (articles de blog) stock\u00e9s dans un dossier blog de votre projet, vous pouvez utiliser les collections pour les r\u00e9cup\u00e9rer et afficher une liste de tout le contenu. Vous pouvez \u00e9galement cr\u00e9er une mise en page pour g\u00e9rer l&rsquo;affichage de ces contenus.<\/p>\n<p>Les collections sont d\u00e9finies dans le fichier de configuration <strong>.eleventy.js<\/strong> et peuvent inclure des donn\u00e9es provenant de diverses sources, telles que des fichiers markdown ou JSON.<\/p>\n<p>Pour ce site de portfolio, cr\u00e9ons un r\u00e9pertoire <strong>projects<\/strong> dans le r\u00e9pertoire <strong>src<\/strong>, pour stocker le contenu markdown de chaque projet. Ce contenu comprendra des d\u00e9tails sur le projet, le probl\u00e8me r\u00e9solu, les technologies utilis\u00e9es, les d\u00e9fis rencontr\u00e9s et les le\u00e7ons tir\u00e9es.<\/p>\n<p>Vous pouvez cr\u00e9er un fichier markdown avec le nom du projet (<strong>quotes-generator.md<\/strong>) et coller le code ci-dessous :<\/p>\n<pre><code class=\"language-md\">---\ntitle: Quotes Generator\ndescription: \"Helps you generates quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.\"\ngitHubURL: \"https:\/\/github.com\/olawanlejoel\/random-quote-generator\"\nimage: \"\/assets\/quotes-banner.jpeg\"\n---\n\nThe quotes generator project is a software tool designed to display random inspirational or thought-provoking quotes to users. This project aims to solve the problem of lack of motivation or inspiration by providing users with a quick and easy way to access inspiring quotes.\n\n### Technologies Used\nThe technologies used in this project include HTML, CSS, and JavaScript. The application utilizes an API to fetch random quotes and display them to the user.\n\n### Challenges and Lessons Learned\nOne of the main challenges faced during this project was designing the user interface to be visually appealing and responsive on different devices. The team had to consider various design elements such as font sizes, colors, and layout to create a user-friendly and aesthetically pleasing interface.\n\nAnother challenge was handling errors and edge cases such as network connectivity issues or invalid API responses. The team had to implement error handling and fallback mechanisms to ensure that the application would continue to function smoothly under various conditions.\n\nThroughout the project, the team learned valuable lessons about front-end development, such as the importance of clean and efficient code, effective debugging and troubleshooting, and responsive design principles. They also learned the importance of utilizing APIs to access and display data from external sources.\n\nOverall, the quotes generator project was a valuable learning experience that allowed the team to develop their technical and creative skills, and create a useful tool for users looking for daily inspiration or motivation.<\/code><\/pre>\n<p><strong>Note :<\/strong> Si vous avez utilis\u00e9 le mod\u00e8le de d\u00e9marrage, vous devriez d\u00e9j\u00e0 les avoir, sinon vous pouvez les copier depuis le r\u00e9pertoire projects de notre <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\/tree\/starter\/src\/projects\" target=\"_blank\" rel=\"noopener noreferrer\">mod\u00e8le de d\u00e9marrage sur GitHub<\/a>.<\/p>\n<p>Le frontmatter en haut de ces fichiers, rend les valeurs disponibles pour l&rsquo;injection dans vos mod\u00e8les.<\/p>\n<p>Comme ces fichiers Markdown se trouvent dans le r\u00e9pertoire <strong>src<\/strong>, Eleventy les traitera comme des mod\u00e8les et g\u00e9n\u00e9rera une page HTML pour chacun d&rsquo;entre eux. Leur URL sera quelque chose comme <strong>\/projects\/quotes-generator<\/strong>.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/quote-project-page.jpg\" alt=\"Apparence du projet sans mise en page\" width=\"1600\" height=\"587\"><figcaption class=\"wp-caption-text\">Apparence du projet sans mise en page<\/figcaption><\/figure>\n<p>Eleventy, cependant, ne saura pas quelle mise en page utiliser pour ces pages parce qu&rsquo;elles n&rsquo;ont pas encore de valeur de mise en page dans leur frontmatter.<\/p>\n<p>Cr\u00e9ons d&rsquo;abord une mise en page pour ce contenu avant de cr\u00e9er une collection et de les ajouter sous forme de liste \u00e0 une page d\u00e9di\u00e9e aux projets.<\/p>\n<p>Comme pr\u00e9c\u00e9demment, cr\u00e9ez un fichier de mise en page (<strong>project.njk<\/strong>) dans le dossier <strong>layouts<\/strong>. Pour \u00e9viter les r\u00e9p\u00e9titions, puisque ce fichier utilisera le balisage HTML par d\u00e9faut, vous ajusterez la mise en page <strong>base.njk<\/strong> en cr\u00e9ant un bloc pour indiquer la section de votre mise en page qui sera modifi\u00e9e.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {% include \"components\/navbar.njk\" %}\n                {% block content %} \n                    {{ content | safe }}\n                {% endblock %}\n            {% include \"components\/footer.njk\" %}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Le bloc re\u00e7oit un nom de contenu car vous pouvez avoir plusieurs blocs dans vos mod\u00e8les. Vous pouvez maintenant \u00e9tendre ce principe \u00e0 votre mise en page <strong>project.njk<\/strong>, de sorte que vous n&rsquo;avez plus qu&rsquo;\u00e0 sp\u00e9cifier le bloc content :<\/p>\n<pre><code class=\"language-html\">{% extends \"layouts\/base.njk\" %}\n\n{% block content %}\n    &lt;div class=\"project-layout\"&gt;\n        &lt;h2&gt;{{title}}&lt;\/h2&gt;\n        &lt;img src=\"{{image}}\" alt=\"image\" class=\"banner-img\" \/&gt;\n        &lt;a href=\"{{gitHubURL}}\" class=\"cta-btn pt-btn\"&gt;\n            &lt;div class=\"small-icons\"&gt;\n                GitHub &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n            &lt;\/div&gt;\n        &lt;\/a&gt;\n        {{ content | safe }}\n    &lt;\/div&gt;\n{% endblock %}<\/code><\/pre>\n<p>Dans le code ci-dessus, vous indiquez comment chaque projet sera affich\u00e9. Il r\u00e9cup\u00e8re le <strong>titre<\/strong>, l&rsquo;<strong>image<\/strong> et le <strong>gitHubURL<\/strong> du frontmatter, puis ajoute d&rsquo;autres contenus en utilisant la variable content (<code>{{ content | safe }}<\/code>).<\/p>\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 ajouter la mise en page \u00e0 la page d&rsquo;accueil de chaque projet :<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/project.njk\ntitle: Quotes Generator\ndescription: \"Helps you generates quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.\"\ngitHubURL: \"https:\/\/github.com\/olawanlejoel\/random-quote-generator\"\nimage: \"\/assets\/quotes-banner.jpeg\"\n---\n\n\u2026<\/code><\/pre>\n<p>Lorsque vous rechargez l&rsquo;URL de chaque projet, par exemple <strong>\/projects\/quotes-generator<\/strong>, vous remarquerez qu&rsquo;elle utilise d\u00e9sormais la mise en page cr\u00e9\u00e9e :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/quote-project-page-with-layout.jpg\" alt=\"Apparence du projet avec la mise en page\" width=\"1600\" height=\"877\"><figcaption class=\"wp-caption-text\">Apparence du projet avec la mise en page<\/figcaption><\/figure>\n<h4>Comment utiliser les collections dans les mod\u00e8les<\/h4>\n<p>Chacun de vos projets s&rsquo;affiche d\u00e9sormais joliment avec la mise en page sp\u00e9cifi\u00e9e, mais comment les internautes peuvent-ils acc\u00e9der \u00e0 ces projets ? Vous devez cr\u00e9er une liste sur laquelle les utilisateurs peuvent cliquer pour acc\u00e9der \u00e0 chaque projet. C&rsquo;est l\u00e0 que les collections entrent en jeu.<\/p>\n<p>Pour utiliser une collection, vous devez la d\u00e9finir dans le fichier de configuration <strong>.eleventy.js<\/strong> en utilisant la m\u00e9thode <code>addCollection()<\/code>.<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    \/\/ \u2026\n\n    eleventyConfig.addCollection('projects', (collection) =&gt; {\n        return collection.getFilteredByGlob('src\/projects\/*.md');\n    });\n\n    return {\n        \/\/ ...\n    };\n};<\/code><\/pre>\n<p>Dans le code ci-dessus, la m\u00e9thode <code>addCollection()<\/code> est utilis\u00e9e pour d\u00e9finir une collection appel\u00e9e projects. La fonction de rappel pass\u00e9e \u00e0 <code>addCollection()<\/code> renvoie tous les fichiers markdown dans le r\u00e9pertoire projects \u00e0 l&rsquo;aide de la m\u00e9thode <code>getFilteredByGlob()<\/code>.<\/p>\n<p>Une fois que vous avez d\u00e9fini une collection, vous pouvez l&rsquo;utiliser dans un mod\u00e8le pour g\u00e9n\u00e9rer des pages bas\u00e9es sur ce contenu. Cr\u00e9ons un mod\u00e8le de page <strong>projects.njk<\/strong>, qui utilisera la mise en page de <strong>base.njk<\/strong>\u00a0:<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Projects\n---\n&lt;div class=\"projects-container\"&gt;\n    &lt;h2&gt;Projects&lt;\/h2&gt;\n    &lt;div class=\"projects-grid\"&gt;\n        {% for project in collections.projects %}\n            &lt;div class=\"project-card\"&gt;\n                &lt;div class=\"project-header\"&gt;\n                    &lt;i class=\"fa-regular fa-folder-open folder-icon\"&gt;&lt;\/i&gt;\n                    &lt;div class=\"small-icons\"&gt;\n                        &lt;a href={{project.data.gitHubURL}}&gt;&lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n                &lt;h3&gt;{{project.data.title}}&lt;\/h3&gt;\n                &lt;p&gt;{{project.data.description}}&lt;\/p&gt;\n                &lt;a href=\"{{project.url}}\" class=\"cta-btn\"&gt;Read more&lt;\/a&gt;\n            &lt;\/div&gt;\n        {% endfor %}\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Dans le code ci-dessus, l&rsquo;instruction <code>{% for %}<\/code> est utilis\u00e9e pour parcourir en boucle tous les projets de la collection et g\u00e9n\u00e9rer une fiche de projet pour chacun d&rsquo;entre eux.<\/p>\n<p>Vous aurez acc\u00e8s \u00e0 toutes les variables en utilisant <code>project.data.[key]<\/code>. Par exemple, le code ci-dessus affichera le titre, la description et l&rsquo;URL GitHub du projet. Vous pouvez \u00e9galement acc\u00e9der \u00e0 l&rsquo;URL du projet en utilisant <code>project.url<\/code>.<\/p>\n<p>Lorsque vous ex\u00e9cutez la commande <code>npm start<\/code> et que vous naviguez jusqu&rsquo;\u00e0 la page des projets, voici \u00e0 quoi ressemblera votre page lorsque vous aurez ajout\u00e9 plusieurs projets :<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/projects-page-with-content.jpg\" alt=\"Page mod\u00e8le des projets\" width=\"1600\" height=\"877\"><figcaption class=\"wp-caption-text\">Page mod\u00e8le des projets<\/figcaption><\/figure>\n<h3>Comment utiliser les codes courts<\/h3>\n<p>Les codes courts permettent de d\u00e9finir des balises HTML personnalis\u00e9es ou des valeurs dynamiques JavaScript que vous pouvez r\u00e9utiliser dans vos mod\u00e8les. Par exemple, vous pouvez d\u00e9finir un code court pour g\u00e9n\u00e9rer l&rsquo;ann\u00e9e en cours et l&rsquo;ajouter \u00e0 votre site web.<\/p>\n<p>Dans le fichier de configuration <strong>.eleventy.js<\/strong>, vous pouvez d\u00e9finir un code court \u00e0 l&rsquo;aide de la m\u00e9thode <code>addShortcode()<\/code>. Par exemple, le code suivant d\u00e9finit un code court appel\u00e9 year :<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    \/\/ ...\n    eleventyConfig.addShortcode('year', () =&gt; {\n        return `${new Date().getFullYear()}`;\n    });\n    return {\n        \/\/ ...\n    };\n};<\/code><\/pre>\n<p>Le shortcode year ci-dessus renvoie l&rsquo;ann\u00e9e en cours, que vous pouvez ajouter \u00e0 n&rsquo;importe quel mod\u00e8le de votre projet. Par exemple, au lieu de coder en dur l&rsquo;ann\u00e9e dans le pied de page de ce site web, vous pouvez l&rsquo;ajouter dynamiquement \u00e0 l&rsquo;aide de <code>{% year %}<\/code>, de mani\u00e8re \u00e0 ce qu&rsquo;elle se mette \u00e0 jour chaque ann\u00e9e :<\/p>\n<pre><code class=\"language-html\">&lt;hr \/&gt;\n&lt;div class=\"footer-container\"&gt;\n    &lt;p&gt;\u00a9 {% year %} Joel's Portfolio&lt;\/p&gt;\n    &lt;div class=\"social_icons\"&gt;\n        \/\/ ...\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Lors du rendu de la page, la sortie inclura l&rsquo;ann\u00e9e en cours dans la balise HTML <code>p<\/code>.<\/p>\n<h2>Comment ajouter un th\u00e8me \u00e0 un site Eleventy<\/h2>\n<p>L&rsquo;ajout d&rsquo;un th\u00e8me \u00e0 un site Eleventy peut \u00eatre un excellent moyen de personnaliser rapidement l&rsquo;aspect et la convivialit\u00e9 de votre site. Officiellement, Eleventy fait r\u00e9f\u00e9rence aux th\u00e8mes en tant que \u00ab starters \u00bb (ils signifient la m\u00eame chose). De nombreux sites web fournissent des th\u00e8mes Eleventy gratuits, tels que les th\u00e8mes <a href=\"https:\/\/www.11ty.dev\/docs\/starter\/\" target=\"_blank\" rel=\"noopener noreferrer\">officiels Eleventy<\/a> et les <a href=\"https:\/\/jamstackthemes.dev\/ssg\/eleventy\/\" target=\"_blank\" rel=\"noopener noreferrer\">th\u00e8mes Jamstack<\/a>.<\/p>\n<p>Tout ce que vous avez \u00e0 faire est de s\u00e9lectionner votre th\u00e8me ou d\u00e9marreur pr\u00e9f\u00e9r\u00e9, puis d&rsquo;acc\u00e9der \u00e0 son d\u00e9p\u00f4t GitHub pour le cloner sur votre machine locale. Veillez \u00e0 lire la documentation pour conna\u00eetre les \u00e9tapes de configuration et de personnalisation des projets.<\/p>\n<p>Ex\u00e9cutez <code>npm install<\/code> pour installer tous les paquets utilis\u00e9s, puis ex\u00e9cutez <code>npm start<\/code> pour servir votre application localement \u00e0 <strong>http:\/\/localhost:8080\/.<\/strong><\/p>\n<h2>Comment d\u00e9ployer un site Eleventy<\/h2>\n<p>Vous avez maintenant r\u00e9ussi \u00e0 cr\u00e9er un site web statique de portfolio \u00e9l\u00e9gant avec Eleventy. Avoir ce type de site sur votre machine locale n&rsquo;est pas suffisant. Vous voudriez l&rsquo;h\u00e9berger en ligne pour le partager avec votre public.<\/p>\n<p>Kinsta est une plateforme cloud qui vous permet d&rsquo;<a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\">h\u00e9berger des sites web statiques<\/a>, dont Eleventy. 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>), puis en le d\u00e9ployant sur Kinsta.<\/p>\n<p>Avant de pousser vos fichiers vers n&rsquo;importe quel fournisseur Git, cr\u00e9ez un fichier <a href=\"https:\/\/kinsta.com\/fr\/blog\/gitignore-ne-fonctionne-pas\/\">.gitignore<\/a> \u00e0 la racine de votre projet pour sp\u00e9cifier les fichiers et dossiers que Git doit ignorer quand il pousse votre code :<\/p>\n<pre><code class=\"language-git\"># dependencies\n\/node_modules\n\n# run\n\/_site<\/code><\/pre>\n<h3>Pousser votre site Eleventy vers GitHub<\/h3>\n<p>Pour ce guide, nous utiliserons GitHub. Cr\u00e9ez un d\u00e9p\u00f4t sur GitHub, puis vous pourrez utiliser les <a href=\"https:\/\/kinsta.com\/fr\/blog\/git-avance\/\">commandes git<\/a> pour <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-pousser-code-github\/\">pousser votre code<\/a>.<\/p>\n<p>Initialisez votre d\u00e9p\u00f4t Git local en ouvrant votre terminal, en naviguant jusqu&rsquo;au r\u00e9pertoire qui contient votre projet et en ex\u00e9cutant la commande suivante :<\/p>\n<pre><code class=\"language-bash\">git init<\/code><\/pre>\n<p>Ajoutez maintenant votre code au d\u00e9p\u00f4t Git local \u00e0 l&rsquo;aide de la commande suivante :<\/p>\n<pre><code class=\"language-bash\">git add.<\/code><\/pre>\n<p>Vous pouvez maintenant valider vos modifications \u00e0 l&rsquo;aide de la commande suivante :<\/p>\n<pre><code class=\"language-bash\">git commit -m \"my first commit\"<\/code><\/pre>\n<p><strong>Remarque :<\/strong> Remplacez \u00ab my first commit \u00bb par un bref message d\u00e9crivant vos modifications.<\/p>\n<p>Enfin, poussez votre code sur GitHub \u00e0 l&rsquo;aide des commandes suivantes :<\/p>\n<pre><code class=\"language-bash\">git remote add origin [repository URL]\ngit push -u origin master<\/code><\/pre>\n<p><strong>Note :<\/strong> Remplacez [repository URL] par l&rsquo;URL de votre d\u00e9p\u00f4t GitHub.<\/p>\n<p>Si vous avez r\u00e9ussi, vous pouvez maintenant d\u00e9ployer votre site sur Kinsta !<\/p>\n<h3>D\u00e9ploiement de votre site Eleventy sur Kinsta<\/h3>\n<p>Le d\u00e9ploiement vers Kinsta se fait en quelques secondes. Une fois que votre d\u00e9p\u00f4t est pr\u00eat, suivez les \u00e9tapes ci-dessous pour d\u00e9ployer votre site statique sur Kinsta :<\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li>Connectez-vous ou cr\u00e9ez un compte pour voir votre tableau de bord <a href=\"https:\/\/my.kinsta.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 de gauche, puis 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>Ajoutez les r\u00e9glages de construction dans le format suivant :\n<ul>\n<li><strong>Commande de construction :<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Version de Node :<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>R\u00e9pertoire de publication :<\/strong> <code>_site<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Enfin, cliquez sur <strong>Cr\u00e9er un site<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Et c&rsquo;est tout ! Vous disposez maintenant d&rsquo;un site d\u00e9ploy\u00e9 en quelques secondes. Un lien est fourni pour acc\u00e9der \u00e0 la version d\u00e9ploy\u00e9e de votre site.<\/p>\n<p>Comme alternative \u00e0 l&rsquo;h\u00e9bergement de sites statiques, 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;applications<\/a> de Kinsta, qui fournit une plus grande flexibilit\u00e9 d&rsquo;h\u00e9bergement, un plus large \u00e9ventail 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\">statistiques compl\u00e8tes<\/a> englobant des donn\u00e9es en temps r\u00e9el et historiques.<\/p>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Dans cet article, vous avez appris \u00e0 cr\u00e9er un site web \u00e9l\u00e9gant avec Eleventy, \u00e0 personnaliser un site statique Eleventy \u00e0 partir de la base, et \u00e0 construire un joli site web de portfolio.<\/p>\n<p>Que vous construisiez un blog personnel, un site de portfolio ou une boutique en ligne, Eleventy peut vous aider \u00e0 atteindre vos objectifs avec un minimum d&rsquo;effort et un maximum d&rsquo;impact.<\/p>\n<p>Alors pourquoi ne pas l&rsquo;essayer d\u00e8s aujourd&rsquo;hui et <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">l&rsquo;h\u00e9berger gratuitement sur Kinsta<\/a> ? Nous avons un <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">mod\u00e8le Eleventy \u00ab Hello World \u00bb<\/a> que vous pouvez utiliser pour vous aider \u00e0 commencer \u00e0 cr\u00e9er encore plus rapidement.<\/p>\n<p><em>\u00c0 vous de jouer : que pensez-vous d&rsquo;Eleventy ? Avez-vous utilis\u00e9 Eleventy pour construire 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>Avec l&rsquo;essor des g\u00e9n\u00e9rateurs de sites statiques (Static Site Generator ou SSG) comme Eleventy, la cr\u00e9ation d&rsquo;un site web statique \u00e9l\u00e9gant et efficace n&rsquo;a jamais \u00e9t\u00e9 &#8230;<\/p>\n","protected":false},"author":287,"featured_media":68569,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[973,1011,1020],"class_list":["post-68568","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-headless-cms","topic-generateurs-sites-statiques","topic-outils-developpement-web"],"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>Cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d&#039;un langage c\u00f4t\u00e9 serveur ou d&#039;une base de donn\u00e9es.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d&#039;un langage c\u00f4t\u00e9 serveur ou d&#039;une base de donn\u00e9es.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\" \/>\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-04-27T10:34:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-27T08:37:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"6084\" \/>\n\t<meta property=\"og:image:height\" content=\"3042\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d&#039;un langage c\u00f4t\u00e9 serveur ou d&#039;une base de donn\u00e9es.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\" \/>\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=\"26 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)\",\"datePublished\":\"2023-04-27T10:34:11+00:00\",\"dateModified\":\"2023-10-27T08:37:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\"},\"wordCount\":4359,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\",\"name\":\"Cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\",\"datePublished\":\"2023-04-27T10:34:11+00:00\",\"dateModified\":\"2023-10-27T08:37:35+00:00\",\"description\":\"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d'un langage c\u00f4t\u00e9 serveur ou d'une base de donn\u00e9es.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"G\u00e9n\u00e9rateurs de sites statiques\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/generateurs-sites-statiques\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.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:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.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:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty) - Kinsta\u00ae","description":"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d'un langage c\u00f4t\u00e9 serveur ou d'une base de donn\u00e9es.","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:\/\/kinsta.com\/fr\/blog\/eleventy\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)","og_description":"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d'un langage c\u00f4t\u00e9 serveur ou d'une base de donn\u00e9es.","og_url":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-04-27T10:34:11+00:00","article_modified_time":"2023-10-27T08:37:35+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d'un langage c\u00f4t\u00e9 serveur ou d'une base de donn\u00e9es.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Joel Olawanle","Dur\u00e9e de lecture estim\u00e9e":"26 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)","datePublished":"2023-04-27T10:34:11+00:00","dateModified":"2023-10-27T08:37:35+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/"},"wordCount":4359,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/eleventy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/","url":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/","name":"Cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","datePublished":"2023-04-27T10:34:11+00:00","dateModified":"2023-10-27T08:37:35+00:00","description":"Apprenez \u00e0 utiliser Eleventy pour cr\u00e9er un site web de portfolio statique, \u00e9poustouflant et fonctionnel, sans avoir besoin d'un langage c\u00f4t\u00e9 serveur ou d'une base de donn\u00e9es.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/eleventy\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/04\/11ty-static-site-generator-01.png","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/eleventy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"G\u00e9n\u00e9rateurs de sites statiques","item":"https:\/\/kinsta.com\/fr\/sujets\/generateurs-sites-statiques\/"},{"@type":"ListItem","position":3,"name":"Comment cr\u00e9er un site web statique \u00e9l\u00e9gant avec Eleventy (11ty)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.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:\/\/kinsta.com\/fr\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.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:\/\/kinsta.com\/fr\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=68568"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68568\/revisions"}],"predecessor-version":[{"id":73966,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/68568\/revisions\/73966"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/68568\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/68569"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=68568"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=68568"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=68568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}