{"data":{"markdownRemark":{"html":"<p>Ok, je suis à la semaine 3 de mon stage et en commençant à apprendre GatsbyJS je me suis rendu compte que même si Strapi est super cool, Netlify CMS va plus correspondre à ce dont on a besoin.</p>\n<h2>Netlify CMS au lieu de Strapi</h2>\n<h4><em>“Mais d’où vient donc cette révélation ?”</em> ✨</h4>\n<p>C’est au détour d’une conversation avec Maxime (<a href=\"https://twitter.com/n4mzar?lang=fr\">@n4mzar</a>) - un des développeurs de commit42 - que j’ai découvert l’existence de ce CMS. </p>\n<p>Suite à la lecture de mon article sur le choix de la stack, Maxime a voulu tester Strapi (qui fonctionne très bien) mais il a trouvé et testé en parallèle Netlify CMS et il s’est aperçu que ça correspondait mieux à nos besoins sur ce projet de refonte de site. C’est pourquoi il m’en a fait part au plus tôt, c’est à dire, lundi matin en arrivant au bureau.</p>\n<h4><em>“ Et du coup est-ce que tu peux nous en dire un peu plus sur NetlifyCMS ?”</em> 🤔</h4>\n<p>Alors, Netlify CMS c’est aussi un headless CMS - comme Strapi - mais qui permet de générer des fichiers Markdown. En fait l’éditeur de contenu est un WYSIWYG (what you see is what you get) ce qui permet de faire directement la mise en page de l’article et c’est justement ce qui m’intéresse. </p>\n<p>Il se trouve que dans la <a href=\"https://blog.strapi.io/v3-alpha-12-graphql-rich-text-editor-redesigned-dashboard/\">release v3@alpha.12</a> de Strapi, un éditeur de contenu <a href=\"http://glossaire.infowebmaster.fr/wysiwyg/\">WYSIWYG</a> a aussi été mis en place suite à une forte demande, mais ce qui m’a fait changer d’avis quant à Strapi c’est que Netlify CMS n’a pas besoin de base de données. Lorsque l’on crée un nouveau post avec Netlify CMS, ce dernier est automatiquement exporté en fichier markdown puis stocké dans un dossier dans le repository du projet. Ce qui a l’avantage de faciliter le déploiement avec <a href=\"https://www.netlify.com/\">Netlify</a> (Netlify normal, pas Netlify CMS… vous m’suivez ?) car il il n’y a pas de base de données à héberger.</p>\n<h2>Gatsby + Netlify CMS + Semantic UI</h2>\n<h4><em>“Quelles sont les autres nouvelles de la semaine Eva ?”</em> 👀</h4>\n<p>J’ai passé beaucoup de temps à lire et regarder des tutoriels pour comprendre comment fonctionne GatsbyJS (tous les liens seront dans les sources) et surtout à comprendre l’organisation du dossier et l’utilisation de chaque fichier. J’ai aussi mis en place Netlify CMS sur un projet test avec Gatsby avec Semantic UI que j’ai ensuite déployé pour essayer toute la stack en même temps. Pour voir le répo <a href=\"https://github.com/EvaSpessotto/test-gatsby-netlify\">c’est par ici</a>.</p>\n<p>De ce que j’ai compris, un projet avec Gatsby est composé de la façon suivante:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">|-- /.cache\n|-- /blog\n|-- /src\n\t|--/components\n\t\t|-- layout.js\n\t|-- /pages\n\t\t|-- index.js\n\t\t|-- 404.js\n\t|-- /templates\n|-- /static\n      |--/admin\n\t\t|-- config.yml\n|-- gatsby-config.js\n|-- gatsby-node.js\n|-- gatsby-ssr.js\n|-- gatsby-browser.js</code></pre></div>\n<p>Je vais expliquer l’utilisation des fichiers et dossiers auxquels j’ai eu à faire, pour les autres je vous laisse la <a href=\"https://www.gatsbyjs.org/docs/gatsby-project-structure/\">documentation de Gatsby</a>.</p>\n<h3><code class=\"language-text\">/blog</code></h3>\n<p>Le nom de ce fichier est arbitraire, c’est là que seront stocké les fichiers .md rédigés via Netlify CMS. Si vous n’utilisez pas Netlify CMS vous n’aurez pas besoin de ce dossier.</p>\n<h3><code class=\"language-text\">/src/components</code></h3>\n<p>De la même façon que dans un projet React, le dossier <code class=\"language-text\">/components</code> contient tous les composants. Dans ce dossier on trouvera également un fichier <code class=\"language-text\">layout.js</code> car dans Gatsby le layout est un composant qui va contenir toutes les parties redondantes du site (menu, navigation, footer…). Le composant doit en principe entourer les autres composants:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">src<span class=\"token operator\">/</span>components<span class=\"token operator\">/</span>layout<span class=\"token punctuation\">.</span>js\n\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> Navigation <span class=\"token keyword\">from</span> <span class=\"token string\">\"./global/navigation\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> Footer <span class=\"token keyword\">from</span> <span class=\"token string\">\"./global/footer\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> children <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Navigation</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n      </span><span class=\"token punctuation\">{</span>children<span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Footer</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">src<span class=\"token operator\">/</span>pages<span class=\"token operator\">/</span>index<span class=\"token punctuation\">.</span>js\n\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> Layout <span class=\"token keyword\">from</span> <span class=\"token string\">\"../components/layout\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token function\">IndexPage</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Layout</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello world !</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Layout</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3><code class=\"language-text\">/src/pages</code></h3>\n<p>Ce dossier contient toutes les pages du site. A chaque fois qu’un fichier est ajouté dans ce dossier une route portant le même nom est créé. </p>\n<p><em>NB: pensez à ne pas mettre de majuscule au début du nom de vos pages sinon la route correspondante aura aussi une majuscule (sauf si c’est ce que vous voulez).</em></p>\n<p>Par exemple le fichier <code class=\"language-text\">Articles.js</code> donnera la route suivante <code class=\"language-text\">http://commit42.com/Articles</code>.</p>\n<h3><code class=\"language-text\">/src/templates</code></h3>\n<p>Les templates sont des fichiers qui donnent la structure pour un même type de données. Dans mon cas je vais avoir un template pour les articles de blog, qui pourrait par exemple donner ça:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">blogPostTemplate<span class=\"token punctuation\">.</span>js\n\n<span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> Layout <span class=\"token keyword\">from</span> <span class=\"token string\">\"../components/layout\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token keyword\">const</span> <span class=\"token function\">BlogPostTemplate</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token punctuation\">{</span> data <span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\n  <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> markdownRemark <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> data\n  <span class=\"token keyword\">const</span> <span class=\"token punctuation\">{</span> frontmatter<span class=\"token punctuation\">,</span> html <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> markdownRemark\n\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Layout</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>blog-post<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n          </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>frontmatter<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n          </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h4</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>frontmatter<span class=\"token punctuation\">.</span>date<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h4</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n          </span><span class=\"token punctuation\">{</span>\n            frontmatter<span class=\"token punctuation\">.</span>tags <span class=\"token operator\">&amp;&amp;</span> frontmatter<span class=\"token punctuation\">.</span>tags<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">tag<span class=\"token punctuation\">,</span> index</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">key</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>index<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>tag<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>button</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">}</span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>img</span> <span class=\"token attr-name\">src</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>frontmatter<span class=\"token punctuation\">.</span>thumbnail<span class=\"token punctuation\">}</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> \n          <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>blog-post-content<span class=\"token punctuation\">\"</span></span>\n          <span class=\"token attr-name\">dangerouslySetInnerHTML</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span>__html<span class=\"token punctuation\">:</span> html<span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span></span>\n        <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Layout</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">const</span> pageQuery <span class=\"token operator\">=</span> graphql<span class=\"token template-string\"><span class=\"token string\">`\n  query($path: String!) {\n    markdownRemark(frontmatter: { path: { eq: $path } }) {\n      html\n      frontmatter {\n        date(formatString: \"MMMM DD, YYYY\")\n        path\n        title\n        tags\n        thumbnail\n      }\n    }\n  }\n`</span></span></code></pre></div>\n<p><em>NB: Dans la div en dessous de la balise img j’injecte directement le markdown récupéré avec GraphQL, ainsi je n’ai aucune mise en page à faire !</em></p>\n<p><em>NB 2: La query tout à la fin après le composant est une requete qui grâce à GraphQL me permet de récupérer les données dont j’ai besoin, ici les articles. Le frontmatter est la partie tout en haut d’un fichier markdown (.md) dans laquelle on met toutes les informations qui ne sont pas le contenu de l’article (le titre, la date, le nom de l’auteur, les tags…)</em></p>\n<p><em>Exemple:</em></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">---\ntitle: Article 1\nAuthor: Eva\nPath: /articles/article-1\nDate: 06/03/2019\n---\n\nIci le contenu !</code></pre></div>\n<p>Ainsi tous mes articles auront cette structure:</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5a52e0856f875f03eb7d4dd49dad6881/c2c20/template-blog.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 729px;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 100.41152263374484%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEQ0lEQVQ4y62UW0xUVxSGj0ZQYtQB5sYg41wYdRBmYIYBhkFujjhg0N5ECmUCApoU25Bq2iY2MdYHE1N5aZs2fbNpH5rWpKZpUhOBjKStbWKaJg1XKSIMEEDAGNNELl/XOWJfmjQ+dCdf1tpr7/2vdc7ZZynxqSlG7t7V6B8cYHRsjJXVVVbX1lhZZ01QxzP7X0N58vgxTx4+5K/FJZ48egTLy//atLYu+jwotyfG+bL/D64N9XND/BszcX6I36dnOs73k+OaXX2Oyv6p8M6Deb66N8q3E/e4LlwT/+uxUa7fH+Mb8b+TmPoKnrdS5ZMrXUSPHKWj8TVOC53RZs62tPF260nebTulcaopSrustTc20tbQSOurDTTX1xOtO07TsTqa6uo4Uh3hi6tXUdqbm9mxeTPONAsuSzpZVjtex278Ljf5gs/pwu9wkWd3anhtTnKsNrJ2Wtkj+zPNadpZnWhcPH8e5a2ODpxmM4VZWRRn51Ce6yfsL6C6MERVoJCD4lflFxL2BTjgy6dC1ks9uYSyPQSzsgnsdRNwu3GaTHxw6RLK2dMd7JUMoRyPiOXJ4QIigSJqCoupVm1BUEP11bi6rgl789gvZ4pFNLgvmz1paXSpgu+8+QZeq1WqyheRIC+GynilpIy60grqyyqprzjI8bKwcICXSso5GiyhVpLViPghv1Sd56My1ycau/jw8mWU9zo7KXA6qA0G5VAF0XCVHJBH9ORQKdT6czkWLOAFibWED3CiKkJjZVgSlkvyEo4UBTlcWETQ5eLTri6U98+eIZydRUNFOS+Higm59+IwG9hlSMEm7Dbpqdq9k0pXOvszd3HY56WxvJT2SISTNTWcOBSh5VAVRwP5fP7xRygXznSSm2HB47CRbkjFlKIjw5iCw5QqLzoVu+C2mDjstlLrzqAi00LuTjMBewbVXjcR7z4OerMpslv5rOsKyuutzdi3J1KaaSbkMOGzGuUqJGNN3YbdsAOHUSek4BQ86UZJbpYPIE+g12HVJ0tcL7fEiG5L4tNr09EaxbBlo1ShFzE9pU4z+51p+G1mXGlqhSlalTajJDGmSvV6MkwGwSiYsBjFyhfenpTExQsX5KOcjOLZtoE803b2JCdh0yXhTN6KQ7BsTcSQtAld4kZ2JCjoEjaIFT9xk/wMCRq6LZvRb9tKgqJw/tw5lD8H+/k11sPvP/fx20993O6LcefHW/wiNtbbQ6ynZ912E+u++ZSem9yS2K3eXo2+WIze7m5GpQUq/M9DuT8+zuDgIENDQwyJHRQ7MjLCsDpXGR5mYGCA4ZFhRsRX19T9w+txlf7+AWZnZ592m/m5OSYmJ5maniYejzMlHXxa/ImJCc1XY/H4JPH1+JTMJ2W/KjAzMyOxKW3tkdqc1QpVZ3Z2joWFBRYXF1laWmJ+fl6bLyw8YE4SqvFnVuXZ+rJ091XplapdWVnRBP8GfAAKm3am4OAAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"Template d'un post du blog\"\n        title=\"\"\n        src=\"/static/5a52e0856f875f03eb7d4dd49dad6881/c2c20/template-blog.png\"\n        srcset=\"/static/5a52e0856f875f03eb7d4dd49dad6881/02020/template-blog.png 243w,\n/static/5a52e0856f875f03eb7d4dd49dad6881/d40d9/template-blog.png 485w,\n/static/5a52e0856f875f03eb7d4dd49dad6881/c2c20/template-blog.png 729w\"\n        sizes=\"(max-width: 729px) 100vw, 729px\"\n      />\n  </span>\n  </a></p>\n<h3><code class=\"language-text\">/static/admin</code></h3>\n<p>Le dossier admin contient la configuration pour Netlify CMS. C’est dans un fichier config.yml que l’on défini les collections et les champs que l’on souhaite pouvoir remplir depuis l’interface. De même que le dossier /blog, si vous n’utilisez pas Netlify CMS vous n’aurez pas besoin de ce dossier.</p>\n<p>Si Netlify CMS vous intéresse voici le lien pour le configurer: <a href=\"https://www.netlifycms.org/docs/add-to-your-site/\">https://www.netlifycms.org/docs/add-to-your-site/</a></p>\n<h3><code class=\"language-text\">gatsby-config.js</code></h3>\n<p>C’est le fichier dans lequel on configure les extensions que l’on installe pour Gatsby.\nDe mon côté j’ai utilisé:</p>\n<ul>\n<li>gatsby-source-filesystem</li>\n<li>gatsby-transformer-remark</li>\n<li>gatsby-plugin-sharp</li>\n<li>gatsby-transformer-sharp</li>\n<li>gatsby-remark-relative-images</li>\n<li>gatsby-remark-copy-linked-files</li>\n</ul>\n<p>Les deux premiers servent à récupérer et formater le markdown pour qu’il soit lu par GatsbyJS, les autres vont s’occuper d’optimiser les images (donc pour réduire le temps de chargement etc).</p>\n<h3><code class=\"language-text\">gatsby-node.js</code></h3>\n<p>Ce fichier permet de gérer la création de pages à partir des données récupérées via GraphQL.\nPar exemple pour les articles, au lieu de créer une page par article dans le dossier <code class=\"language-text\">/src.pages</code>,  j’ai créé un template dans lequel j’injecte les données pour chaque article. Seulement pour accéder à un article il faut une route unique, c’est donc dans gatsby-node.js que l’on va configurer ça. (<a href=\"https://www.gatsbyjs.org/docs/creating-and-modifying-pages/\">ici la documentation officielle</a> à ce sujet)</p>\n<h2>Déploiement 🚀</h2>\n<p>Concernant le déploiement sur Netlify j’ai eu un peu de mal comme c’était sur la première fois et dans la <a href=\"https://www.gatsbyjs.org/docs/sourcing-from-netlify-cms/#deploying-to-netlify\">documentation de Gatsby</a> je n’avais pas compris qu’il fallait à la fois gérer le déploiement sur Netlify et l’OAuth sur Github (mais grâce à Maxime qui avait testé pour moi ce week-end ça a été). </p>\n<p>Cependant faites bien attention à configurer dans le dossier config.yml le repo que vous allez utiliser avant de lancer le déploiement.</p>\n<p>Vous pouvez trouvez le répo et la démo <a href=\"https://github.com/EvaSpessotto/test-gatsby-netlify\">juste ici</a>.</p>\n<h2>Conclusion 👏</h2>\n<p>Conclusion\nCette semaine de formation et de tests a été des plus primordiale car j’ai pu revoir ma stack et l’ajuster. Outre ce petit changement de CMS, j’ai bien pu prendre en main GatsbyJS, Netlify CMS et le déploiement sur Netlify que je ne connaissais pas du tout. </p>\n<p>Avec Gatsby j’ai rapidement compris l'intérêt du layout et des templates qui vont me faire gagner énormément de temps dans la conception future du nouveau site. Netlify CMS quant à lui est très facilement configurable, super accessible et pratique ; le déploiement de l’ensemble a été incroyablement rapide, pour quelqu’un qui n’avait encore jamais déployé une application j’ai été bluffée.</p>\n<p>Dans le prochain article je vous parlerai du MVP du site de commit42 que je ferai avec la nouvelle stack évoquée dans cet article: GatsbyJS + Semantic UI React + Netlify CMS. Stay tuned !</p>\n<h3>Sources</h3>\n<h4>Tutoriels GatsbyJS</h4>\n<ul>\n<li><a href=\"https://www.gatsbyjs.org/tutorial/\">https://www.gatsbyjs.org/tutorial/</a></li>\n<li><a href=\"https://www.youtube.com/playlist?list=PLnHJACx3NwAdCmDDPdCt6W6BJfRbatfnc\">https://www.youtube.com/playlist?list=PLnHJACx3NwAdCmDDPdCt6W6BJfRbatfnc</a></li>\n<li><a href=\"https://egghead.io/courses/build-a-blog-with-react-and-markdown-using-gatsby\">https://egghead.io/courses/build-a-blog-with-react-and-markdown-using-gatsby</a></li>\n<li><a href=\"https://www.gatsbyjs.org/blog/2017-07-19-creating-a-blog-with-gatsby/\">https://www.gatsbyjs.org/blog/2017-07-19-creating-a-blog-with-gatsby/</a></li>\n<li><a href=\"https://github.com/prayash/awesome-gatsby\">https://github.com/prayash/awesome-gatsby</a></li>\n</ul>\n<h4>Afficher la liste des fichiers markdown</h4>\n<p><a href=\"https://www.gatsbyjs.org/docs/adding-a-list-of-markdown-blog-posts/\">https://www.gatsbyjs.org/docs/adding-a-list-of-markdown-blog-posts/</a></p>\n<h4>Créer des pages avec GatsbyJS</h4>\n<p><a href=\"https://www.gatsbyjs.org/docs/creating-and-modifying-pages/\">https://www.gatsbyjs.org/docs/creating-and-modifying-pages/</a></p>\n<h4>Structure type d’un projet avec Gatsby</h4>\n<ul>\n<li><a href=\"https://www.gatsbyjs.org/docs/gatsby-project-structure/\">https://www.gatsbyjs.org/docs/gatsby-project-structure/</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=UwYTK28gNmQ&#x26;list=PLnHJACx3NwAdCmDDPdCt6W6BJfRbatfnc&#x26;index=5\">https://www.youtube.com/watch?v=UwYTK28gNmQ&#x26;list=PLnHJACx3NwAdCmDDPdCt6W6BJfRbatfnc&#x26;index=5</a></li>\n</ul>\n<h4>Gatsby et NetlifyCMS</h4>\n<p><a href=\"https://www.gatsbyjs.org/docs/sourcing-from-netlify-cms/#sourcing-from-netlify-cms\">https://www.gatsbyjs.org/docs/sourcing-from-netlify-cms/#sourcing-from-netlify-cms</a></p>\n<h4>Même si on a plus prévu de s’en servir, j’ai quand même trouvé un tutoriel pour Gatsby et Strapi:</h4>\n<p><a href=\"https://jamstatic.fr/2018/04/26/construire-un-blog-statique-avec-gatsby-et-strapi/\">https://jamstatic.fr/2018/04/26/construire-un-blog-statique-avec-gatsby-et-strapi/</a></p>\n<h4>Plugin pour Gatsby et Strapi</h4>\n<p><a href=\"https://www.gatsbyjs.org/packages/gatsby-source-strapi/?=strapi\">https://www.gatsbyjs.org/packages/gatsby-source-strapi/?=strapi</a></p>\n<h4>Exemple de site avec Gatsby et Sémantic UI</h4>\n<p><a href=\"https://www.gatsbyjs.org/starters/parmsang/gatsby-starter-ecommerce/\">https://www.gatsbyjs.org/starters/parmsang/gatsby-starter-ecommerce/</a></p>\n<h4>Netlify vs Netlify CMS</h4>\n<p><a href=\"https://www.netlifycms.org/docs/intro/#netlify-cms-vs-netlify\">https://www.netlifycms.org/docs/intro/#netlify-cms-vs-netlify</a></p>","excerpt":"Ok, je suis à la semaine 3 de mon stage et en commençant à apprendre GatsbyJS je me suis rendu compte que même si Strapi est super cool…","timeToRead":9,"fields":{"slug":"/blog/netlify-cms-gatsbyjs-et-un-beau-repo/"},"frontmatter":{"date":"2019-03-07T00:00:00.000Z","tags":["NetlifyCMS","GatsbyJS","Netlify"],"title":"Netlify CMS, GatsbyJS et un repo tout beau","author":"Eva Spessotto","thumbnail":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAABp0lEQVQoz42S62obMRCF9f6vVAoNFArBaUtCXOw45EJsvOvVZXQd7UraHtsQ0iY/MvshBklHmjkrwXlkzj4W7caExMdpKqDWOp+ilPqWWtvm/mmxuF7eLoXStu+Hrj8QuWks45GplGIM/bj8fXO7JvLauBP2nEACNHkRmQMHH0PKPNVpntv5wsRltdk9b6WxkzTJGHamkinAnjAmC9pHt8uhH/0+u332+9Hp5ORNkD8br0r8E/SvqO92crM+fHnSF4/626O+eNBft+Za9C+ktsH2TF2iDiMbGYZuaeXSm5U360CrSM/b4eGu+76zV1tagBe67GgtrPMxpza32uBFbXMNkcnxOLVxms/wWK3lnCraKuMRJJyq8CE571+9RcSUnfMGRsH6GBDMjCukkgc5JE4RX4oxsYC9ELTW3orJwmGLkayz1icc5yNqxAwOBAFSnoS1wbmItVcMBaWP/0MqQIMibVDI8SDIsNm64H0KMQssKP0PmPkPTEIQgudT5Jw5M16UeL/1IzFMiLgZoOAQjh2jl0+JAdmgFEllBmXQi9LkfPqs+EP+Ana14ZDTTuiVAAAAAElFTkSuQmCC","aspectRatio":1.5384615384615385,"src":"/static/d1b387b32d46407d2b0110a3bc80a456/c7e19/netlify-cms2.png","srcSet":"/static/d1b387b32d46407d2b0110a3bc80a456/475cb/netlify-cms2.png 245w,\n/static/d1b387b32d46407d2b0110a3bc80a456/0b65f/netlify-cms2.png 490w,\n/static/d1b387b32d46407d2b0110a3bc80a456/c7e19/netlify-cms2.png 980w,\n/static/d1b387b32d46407d2b0110a3bc80a456/ba299/netlify-cms2.png 1200w","sizes":"(max-width: 980px) 100vw, 980px"}}}}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/blog/netlify-cms-gatsbyjs-et-un-beau-repo/"}}