<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Mamadou Diagne - Xarala Academy]]></title><description><![CDATA[Formez-vous dans le digital]]></description><link>http://www.xarala.co/blog/</link><image><url>http://www.xarala.co/blog/favicon.png</url><title>Mamadou Diagne - Xarala Academy</title><link>http://www.xarala.co/blog/</link></image><generator>Ghost 5.33</generator><lastBuildDate>Sun, 17 May 2026 00:33:19 GMT</lastBuildDate><atom:link href="http://www.xarala.co/blog/author/mamadou/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Jamstack, et puis quoi encore !]]></title><description><![CDATA[Oui, je sais, mais ne sois pas étonné de découvrir un nouveau mot ou une nouvelle façon de faire des sites internet ou applications. Avec la technologie, tout n'est qu'une question de temps.]]></description><link>http://www.xarala.co/blog/jamstack-et-puis-quoi-encore/</link><guid isPermaLink="false">6144de2e6dfc6c78358100f9</guid><category><![CDATA[Développement Web]]></category><dc:creator><![CDATA[Mamadou Diagne]]></dc:creator><pubDate>Fri, 17 Sep 2021 20:42:57 GMT</pubDate><media:content url="http://www.xarala.co/blog/content/images/2021/09/jamstack01.png" medium="image"/><content:encoded><![CDATA[<h2 id="jamstack"><a href="https://jamstack.org">Jamstack</a></h2><img src="http://www.xarala.co/blog/content/images/2021/09/jamstack01.png" alt="Jamstack, et puis quoi encore !"><p>Oui, je sais, mais ne sois pas &#xE9;tonn&#xE9; de d&#xE9;couvrir un nouveau mot ou une nouvelle fa&#xE7;on de faire des sites internet ou applications. Avec la technologie, tout n&apos;est qu&apos;une question de temps.</p><blockquote>H&#xE9; oui, le temps est venu pour toi de passer au Jamstack !</blockquote><h2 id="pas-de-panique">Pas de panique</h2><p>3 ingr&#xE9;dients, c&apos;est tout ce qu&apos;il te faut !</p><h3 id="j-javascript"><a href="https://jamstack.org/what-is-jamstack/">J (JavaScript)</a></h3><h3 id="a-api"><a href="https://jamstack.org/glossary/api/">A (API)</a></h3><h3 id="m-markup"><a href="https://jamstack.org/glossary/markup/">M (Markup)</a></h3><h2 id="tr%C3%AAve-de-bavardage-au-travail">Tr&#xEA;ve de bavardage, au travail</h2><p>Nous allons faire notre premi&#xE8;re recette Jamstack qui sera un Blog sans base de donn&#xE9;es, juste des fichier texte en format <a href="https://fr.wikipedia.org/wiki/Markdown">Markdown</a>.</p><ul><li><a>Cr&#xE9;&#xE9; une application Next.js</a></li><li><a>Ajouter webpack pour Markdown</a></li><li><a>Configurer Next.js pour webpack loader for Markdown</a></li><li><a>Mettre &#xE0; jour le script du package</a></li><li><a>Ajouter du contenu</a></li><li><a>Ajouter un template</a></li><li><a>D&#xE9;marrer le serveur</a></li></ul><h3 id="cr%C3%A9%C3%A9-une-application-nextjs">Cr&#xE9;&#xE9; une application <a href="https://jamstack.org/generators/next/">Next.js</a></h3><pre><code class="language-sh">yarn create next-app blogjam
# or
npx create-next-app blogjam
</code></pre><p>Rends-toi &#xE0; la racine de ton projet</p><pre><code class="language-sh">cd blogjam
</code></pre><blockquote>:rotating_light: Attention Next.js active par d&#xE9;faut une <a href="https://nextjs.org/telemetry#telemetry">t&#xE9;l&#xE9;m&#xE9;trie</a> je vous recommande de le d&#xE9;sactiv&#xE9;</blockquote><pre><code class="language-sh">npx next telemetry disable
</code></pre><h3 id="ajouter-webpack-pour-markdown">Ajouter webpack pour Markdown</h3><pre><code class="language-sh">yarn add frontmatter-markdown-loader
# or
npm i -D frontmatter-markdown-loader
</code></pre><p>Si vous &#xEA;te sur NextJS v11.0.0 ou sup&#xE9;rieur, vous devez ajouter aussi <a href="https://www.npmjs.com/package/@babel/core">@babel/core</a> et <a href="https://babeljs.io/docs/en/babel-preset-react">@babel/preset-react</a></p><pre><code class="language-sh">yarn add @babel/core @babel/preset-react
# or
npm i -D @babel/core @babel/preset-react
</code></pre><h3 id="configurer-nextjs-pour-webpack-loader-for-markdown">Configurer Next.js pour webpack loader for Markdown</h3><p>&#xC9;diter le fichier <code>next.config.js</code> qui est dans la racine du projet et apporter les modifications suivantes.</p><pre><code class="language-diff">// next.config.js
module.exports = {
  reactStrictMode: true,
+ webpack: (cfg) =&gt; {
+   cfg.module.rules.push(
+     {
+       test: /\.md$/,
+       loader: &apos;frontmatter-markdown-loader&apos;,
+       options: { mode: [&apos;react-component&apos;] }
+     }
+   )
+   return cfg;
+ }
}
</code></pre><h3 id="mettre-%C3%A0-jour-le-script-du-package">Mettre &#xE0; jour le script du package</h3><p>Ouvrez le fichier <code>package.json</code> ajout&#xE9; la ligne suivante <code>&quot;export&quot;: &quot;npm run build &amp;&amp; next export&quot;,</code> comme indiqu&#xE9;</p><pre><code class="language-json">&quot;scripts&quot;: {
+ &quot;export&quot;: &quot;npm run build &amp;&amp; next export&quot;,
  &quot;dev&quot;: &quot;next dev&quot;,
  &quot;build&quot;: &quot;next build&quot;,
  &quot;start&quot;: &quot;next start&quot;,
  &quot;lint&quot;: &quot;next lint&quot;
},
</code></pre><h3 id="ajouter-du-contenu">Ajouter du contenu</h3><p>Cr&#xE9;e un nouveau dossier <code>content</code> dans la racine du projet et cr&#xE9;e un fichier Markdown <code>content/home.md</code></p><pre><code class="language-sh">mkdir content
touch content/home.md
</code></pre><p>Ajouter le contenu suivant dans <code>content/home.md</code></p><pre><code class="language-md">---
title: Hello Jamstack !
date: 2021-09-17T19:31:20.591Z
ingredients:
  - description: JavaScript dans le navigateur comme couche ex&#xE9;cutable
    name: JavaScript
  - description: Des API, r&#xE9;utilisables plut&#xF4;t que des bases de donn&#xE9;es sp&#xE9;cifiques &#xE0; l&apos;application
    name: API
  - description: Balise pr&#xE9; construit comme m&#xE9;canisme de livraison
    name: Markup
---
Bienvenue sur mon formidable Blog sur **Jamstack**, pour bien d&#xE9;marrer, il te suffit de 3 ingr&#xE9;dients, c&apos;est tout ce qu&apos;il te faut !
</code></pre><h3 id="ajouter-un-template">Ajouter un template</h3><p>Vous avez votre contenu reste plus cas choisir comment l&apos;afficher, nous allons cr&#xE9;er un template en rempla&#xE7;ant le contenue de <code>pages/index.js</code> par</p><pre><code class="language-js">import Head from &apos;next/head&apos;
import styles from &apos;../styles/Home.module.css&apos;
import { attributes, react as HomeContent } from &apos;../content/home.md&apos;;

export default function Home() {
  let { title, date, ingredients } = attributes;
  return (
    &lt;div className={styles.container}&gt;
      &lt;Head&gt;
        &lt;title&gt;Hello Jamstack !&lt;/title&gt;
        &lt;meta name=&quot;description&quot; content=&quot;Jamstack, et puis quoi encore !&quot; /&gt;
        &lt;link rel=&quot;icon&quot; href=&quot;/favicon.ico&quot; /&gt;
      &lt;/Head&gt;

      &lt;main className={styles.main}&gt;
        &lt;h1 className={styles.title}&gt;
          {title}
        &lt;/h1&gt;
        
        &lt;HomeContent /&gt;

        &lt;ul&gt;
          {ingredients.map((ingredient, index) =&gt; (
            &lt;li key={index}&gt;
              &lt;h2&gt;{ingredient.name}&lt;/h2&gt;
              &lt;p&gt;{ingredient.description}&lt;/p&gt;
            &lt;/li&gt;
          ))}
        &lt;/ul&gt;
      &lt;/main&gt;

      &lt;footer className={styles.footer}&gt;
        Propuls&#xE9; par toi, en {new Date(date).getFullYear()}
      &lt;/footer&gt;
    &lt;/div&gt;
  )
}
</code></pre><h3 id="d%C3%A9marrer-le-serveur">D&#xE9;marrer le serveur</h3><p>D&#xE9;marre ton serveur local &#xE0; la racine de ton projet <code>cd blogjam</code></p><pre><code class="language-sh">yarn dev
# or
npm run dev
</code></pre><ul><li>Ton blog est accessible &#xE0; l&apos;adresse <a href="http://localhost:3000">http://localhost:3000</a></li></ul><figure class="kg-card kg-image-card"><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hyo3tnwese5plef7co1u.png" class="kg-image" alt="Jamstack, et puis quoi encore !" loading="lazy"></figure><p>Et voil&#xE0; ton blog marche, je te donne rendez-vous au prochain post <strong>&quot;Jamstack, et on d&#xE9;ploie !&quot;</strong> pour la suite de cette aventure <strong>&quot;Jamstack, et puis quoi encore !&quot;</strong></p><figure class="kg-card kg-image-card"><img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&amp;emoji=&amp;slug=51JrBtX&amp;button_colour=40DCA5&amp;font_colour=ffffff&amp;font_family=Cookie&amp;outline_colour=000000&amp;coffee_colour=FFDD00" class="kg-image" alt="Jamstack, et puis quoi encore !" loading="lazy"></figure>]]></content:encoded></item></channel></rss>