<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Vinicius Fialho</title><link>https://newblog.viniciusfialho.shop/fr/posts/</link><description>Recent content in Posts on Vinicius Fialho</description><generator>Hugo -- gohugo.io</generator><language>pt-br</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0&lt;/a></copyright><lastBuildDate>Mon, 10 Mar 2014 00:00:00 +0000</lastBuildDate><atom:link href="https://newblog.viniciusfialho.shop/fr/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Migrer vers Hugo depuis Jekyll</title><link>https://newblog.viniciusfialho.shop/fr/posts/2014/03/migrer-vers-hugo-depuis-jekyll/</link><pubDate>Mon, 10 Mar 2014 00:00:00 +0000</pubDate><guid>https://newblog.viniciusfialho.shop/fr/posts/2014/03/migrer-vers-hugo-depuis-jekyll/</guid><description>&lt;h2 id="déplacez-le-contenu-statique-vers-static">Déplacez le contenu statique vers &lt;code>static&lt;/code>&lt;/h2>
&lt;p>Jekyll a une règle comme quoi tout répertoire qui ne commence pas par &lt;code>_&lt;/code> sera
copié tel-quel dans le répertoire &lt;code>_site&lt;/code>. Hugo garde tout le contenu statique
dans le répertoire &lt;code>static&lt;/code>. Vous devez donc déplacer tout ce type de contenu
là-dedans. Avec Jekylll, l&amp;rsquo;arborescence ressemblant à ceci :&lt;/p>
&lt;pre>&lt;code>▾ &amp;lt;root&amp;gt;/
▾ images/
logo.png
&lt;/code>&lt;/pre></description><content type="html"><![CDATA[<h2 id="déplacez-le-contenu-statique-vers-static">Déplacez le contenu statique vers <code>static</code></h2>
<p>Jekyll a une règle comme quoi tout répertoire qui ne commence pas par <code>_</code> sera
copié tel-quel dans le répertoire <code>_site</code>. Hugo garde tout le contenu statique
dans le répertoire <code>static</code>. Vous devez donc déplacer tout ce type de contenu
là-dedans. Avec Jekylll, l&rsquo;arborescence ressemblant à ceci :</p>
<pre><code>▾ &lt;root&gt;/
    ▾ images/
        logo.png
</code></pre>
<p>doit devenir</p>
<pre><code>▾ &lt;root&gt;/
    ▾ static/
        ▾ images/
            logo.png
</code></pre>
<p>En outre, vous allez devoir déplacer tous les fichiers présents à la racine vers
le répertoire <code>static</code>.</p>
<h2 id="créez-votre-configuration-hugo">Créez votre configuration Hugo</h2>
<p>Hugo peut lire votre fichier de configuration au format JSON, YAML et TOML. Hugo
supporte également les paramètres de configuration. Plus d&rsquo;informations sur la
<a href="/overview/configuration/">documentation de configuration Hugo</a></p>
<h2 id="définiez-votre-répertoire-de-publication-sur-_site">Définiez votre répertoire de publication sur <code>_site</code></h2>
<p>La valeur par défaut pour Jekyll est d&rsquo;utiliser le répertoire <code>_site</code> pour
publier le contenu. Pour Hugo, le répertoire de publication est <code>public</code>. Si,
comme moi, vous avez [lié <code>_site</code> vers un sous-module git sur la branche
<code>gh-pages</code>](<a href="http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.ht">http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.ht</a>
ml), vous allez vouloir avoir quelques alternatives :</p>
<ol>
<li>
<p>Changez votre lien du sous-module <code>gh-pages</code> pour pointer sur public au lieu
de <code>_site</code> (recommendé).</p>
<pre><code> git submodule deinit _site
 git rm _site
 git submodule add -b gh-pages
     git@github.com:your-username/your-repo.git public
</code></pre>
</li>
<li>
<p>Ou modifiez la configuration de Hugo pour utiliser le répertoire <code>_site</code> au
lieu de <code>public</code>.</p>
<pre><code> {
     ..
     &quot;publishdir&quot;: &quot;_site&quot;,
     ..
 }
</code></pre>
</li>
</ol>
<h2 id="convertir-un-thème-jekyll-pour-hugo">Convertir un thème Jekyll pour Hugo</h2>
<p>C&rsquo;est la majeure partie du travail. La documentation est votre ami.
Vous devriez vous référer à [la documentation des thèmes de Jekyll]
(<a href="http://jekyllrb.com/docs/templates/">http://jekyllrb.com/docs/templates/</a>) si vous devez vous rafraîchir la mémoire
sur la façon dont vous avez construit votre blog et [les thèmes de Hugo]
(/layout/templates/) pour apprendre la manière de faire sur Hugo.</p>
<p>Pour vous donner un point de référence, la conversion du thème pour
<a href="http://heyitsalex.net/">heyitsalex.net</a> ne m&rsquo;a pris que quelques heures.</p>
<h2 id="convertir-les-extensions-jekyll-vers-des-shortcodes-hugo">Convertir les extensions Jekyll vers des shortcodes Hugo</h2>
<p>Jekyll support les <a href="http://jekyllrb.com/docs/plugins/">extensions</a>; Hugo lui a
les <a href="/doc/shortcodes/">shortcodes</a>. C&rsquo;est assez banal les porter.</p>
<h3 id="implémentation">Implémentation</h3>
<p>Comme exemple, j&rsquo;utilise une extension pour avoir un [<code>image_tag</code>](https://githu
b.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc
06908ec/_plugins/image_tag.rb) presonnalisé pour générer les images avec une
légende sur Jekyll. J&rsquo;ai vu que Hugo implémente un shortcode qui fait exactement
la même chose.</p>
<p>Extension Jekyll :</p>
<pre><code>module Jekyll
  class ImageTag &lt; Liquid::Tag
    @url = nil
    @caption = nil
    @class = nil
    @link = nil
    // Patterns
    IMAGE_URL_WITH_CLASS_AND_CAPTION =
    IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK =
        /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)&quot;(.*?)&quot;(\s+)-&gt;
        ((https?:\/\/|\/)(\S+))(\s*)/i
    IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)&quot;(.*?)&quot;/i
    IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
    IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
    def initialize(tag_name, markup, tokens)
      super
      if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
        @class   = $1
        @url     = $3
        @caption = $7
        @link = $9
      elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
        @class   = $1
        @url     = $3
        @caption = $7
      elsif markup =~ IMAGE_URL_WITH_CAPTION
        @url     = $1
        @caption = $5
      elsif markup =~ IMAGE_URL_WITH_CLASS
        @class = $1
        @url   = $3
      elsif markup =~ IMAGE_URL
        @url = $1
      end
    end
    def render(context)
      if @class
        source = &quot;&lt;figure class='#{@class}'&gt;&quot;
      else
        source = &quot;&lt;figure&gt;&quot;
      end
      if @link
        source += &quot;&lt;a href=\&quot;#{@link}\&quot;&gt;&quot;
      end
      source += &quot;&lt;img src=\&quot;#{@url}\&quot;&gt;&quot;
      if @link
        source += &quot;&lt;/a&gt;&quot;
      end
      source += &quot;&lt;figcaption&gt;#{@caption}&lt;/figcaption&gt;&quot; if @caption
      source += &quot;&lt;/figure&gt;&quot;
      source
    end
  end
end
Liquid::Template.register_tag('image', Jekyll::ImageTag)
</code></pre><p>Écrite en tant que shortcode Hugo:</p>
<pre><code>&lt;!-- image --&gt;
&lt;figure {{ with .Get &quot;class&quot; }}class=&quot;{{.}}&quot;{{ end }}&gt;
    {{ with .Get &quot;link&quot;}}&lt;a href=&quot;{{.}}&quot;&gt;{{ end }}
        &lt;img src=&quot;{{ .Get &quot;src&quot; }}&quot;
            {{ if or (.Get &quot;alt&quot;) (.Get &quot;caption&quot;) }}
                alt=&quot;{{ with .Get &quot;alt&quot;}}
                        {{.}}
                     {{else}}
                        {{ .Get &quot;caption&quot; }}
                     {{ end }}&quot;
               {{ end }} /&gt;
    {{ if .Get &quot;link&quot;}}&lt;/a&gt;{{ end }}
    {{ if or (or (.Get &quot;title&quot;) (.Get &quot;caption&quot;)) (.Get &quot;attr&quot;)}}
    &lt;figcaption&gt;{{ if isset .Params &quot;title&quot; }}
        {{ .Get &quot;title&quot; }}{{ end }}
        {{ if or (.Get &quot;caption&quot;) (.Get &quot;attr&quot;)}}&lt;p&gt;
        {{ .Get &quot;caption&quot; }}
        {{ with .Get &quot;attrlink&quot;}}&lt;a href=&quot;{{.}}&quot;&gt; {{ end }}
            {{ .Get &quot;attr&quot; }}
        {{ if .Get &quot;attrlink&quot;}}&lt;/a&gt; {{ end }}
        &lt;/p&gt; {{ end }}
    &lt;/figcaption&gt;
    {{ end }}
&lt;/figure&gt;
&lt;!-- image --&gt;
</code></pre><h3 id="utilisation">Utilisation</h3>
<p>J&rsquo;ai simplement changé :</p>
<pre><code>{% image
    full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg
    &quot;One of my favorite touristy-type photos. I secretly waited for the
    good light while we were &quot;having fun&quot; and took this. Only regret: a
    stupid pole in the top-left corner of the frame I had to clumsily get
    rid of at post-processing.&quot;
    -&gt;http://www.flickr.com/photos/alexnormand/4829260124/in/
        set-72157624547713078/ %}
</code></pre><p>pour cela (cet exemple utilise une version légèrement étendue nommée <code>fig</code>,
différente de la <code>figure</code> intégrée) :</p>
<pre><code>{{% fig class=&quot;full&quot;
    src=&quot;http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg&quot;
    title=&quot;One of my favorite touristy-type photos. I secretly waited for the
    good light while we were having fun and took this. Only regret: a stupid
    pole in the top-left corner of the frame I had to clumsily get rid of at
    post-processing.&quot;
    link=&quot;http://www.flickr.com/photos/alexnormand/4829260124/in/
            set-72157624547713078/&quot; %}}
</code></pre><p>Comme bonus, les paramètres nommés des shortcodes sont plus lisibles.</p>
<h2 id="touches-finales">Touches finales</h2>
<h3 id="corriger-le-contenu">Corriger le contenu</h3>
<p>Suivant le nombre de modifications que vous avez effectué sur chaque articles
avec Jekyll, cette étape requierra plus ou moins d&rsquo;efforts. Il n&rsquo;y a pas de
règles rigoureuses ici, si ce n&rsquo;est que <code>hugo server --watch</code> est votre ami.
Testez vos modifications et corrigez les erreurs au besoin.</p>
<h3 id="nettoyez-le-tout">Nettoyez le tout</h3>
<p>Vous voudrez sûrement supprimer votre configuration Jekyll maintenant que tout
est fini. Exact, pensez à supprimer tout ce qui est inutilisé.</p>
<h2 id="un-exemple-pratique">Un exemple pratique</h2>
<p><a href="http://heyitsalex.net/">Hey, it&rsquo;s Alex</a> a été migré de Jekyll vers Hugo en
moins de temps qu&rsquo;une journée père enfant. Vous pouvez trouver toutes les
modification en regardant ce [diff](<a href="https://github.com/alexandre-normand/alexand">https://github.com/alexandre-normand/alexand</a>
re-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a&hellip;b7f6605b1265e83b4b
81495423294208cc74d610).</p>]]></content></item></channel></rss>