Il existe de nombreux thèmes pour Jekyll, par ex. https://github.com/jekyll/jekyll/wiki/Themes .
Quelle est la façon la plus simple de passer à un nouveau thème dans une installation EXISTANTE de Jekyll?
Alors que vous pouviez migrer vers une installation existante en forçant un nouveau thème puis en copiant et collant manuellement sur des ressources comme CSS, JS, HTML dans le _includes
, _layouts
et d'autres fichiers dont vous pourriez avoir besoin, ce n'est probablement pas une bonne idée car vous finissez par avoir un mélange d'anciennes et de nouvelles ressources, qui peuvent ne pas être du même nom, mais dans le scénario qu'elles sont (par exemple vous n'avez pas écrasé une ancienne feuille de style à laquelle votre article fait référence), cela provoquera des styles CSS mélangés que vous devrez déboguer et corriger lentement.
Puisque je suppose que vous avez une installation de Jekyll avec Git (si vous ne le faites pas vraiment), vous pouvez créer une branche appelée new-theme
et basculez vers cette branche à partir de master
comme branche de travail. (Une façon simple d'avoir quelque chose comme ça est de simplement copier l'intégralité de votre installation Jekyll et de la coller ailleurs en tant que old-Jekyll-install
si vous ne voulez pas traiter avec les branches Git (mais vraiment, vous devriez. Voici un tutoriel qui m'a aidé à apprendre)
_posts
et vos modifications personnalisées._config.yml
en les comparant manuellement et en déplaçant ce qui est nécessaire.<br \>
balises d'espacement et vous ne voulez pas cela dans le nouveau thème).master
(ou le pousser en production)Cela étant dit, tout cela est assez manuel et pénible, mais au moins vous n'aurez pas à gérer les conflits de ressources. L'inconvénient de faire cela est que votre référentiel ne sera pas synchronisé avec le dépôt de thème. Vous n'aurez donc pas de mises à jour en amont. Je suggérerais toujours que vous fourchiez le dépôt de thème, transférez vos personnalisations personnelles pour votre site Jekyll, puis renommez ce dépôt pour la production. (cela n'utiliserait bien sûr plus l'installation "existante" de Jekyll)
C'est ce que j'ai fait pour changer le thème d'une installation Jekyll existante. Ajustez ces instructions en fonction de vos besoins.
Nous créons une nouvelle branche orpheline newtheme
et nous assurons qu'elle est vide.
git checkout --Orphan newtheme
git rm -rf .
git clean -dfx
Ensuite, nous y tirons les fichiers de thème en ajoutant le thème en tant que télécommande en amont. Dans cet exemple, je tire la branche master
du thème Pixyll de John Otander.
git remote add upstream https://github.com/johnotander/pixyll.git
git fetch upstream
git pull upstream master
Construisez le thème et testez-le.
bundler install
jekyll serve
Maintenant, nous fusionnons nos publications, notre configuration, etc. Vous pouvez utiliser Git checkout
pour copier un fichier ou un dossier de votre ancien site Jekyll. Notez que cela écrasera le fichier du thème s'il existe.
git checkout master -- _posts
Vous pouvez également copier un fichier sous un nouveau nom, par exemple pour le fusionner manuellement.
git show master:_config.yml > _config.yml.old
Si vous avez accidentellement remplacé un fichier de thème, vous pouvez le restaurer.
git checkout upstream/master -- about.md
Voici les fichiers que j'ai dû copier, fusionner, ajuster ou supprimer:
_posts
dossier._drafts
dossier._config.yml
fichier de configuration.Gemfile
gem.CNAME
(pour les pages GitHub).Rakefile
(le cas échéant).Validez vos modifications et n'oubliez pas de tester à nouveau le thème.
Enfin, nous remplaçons notre branche master
existante par la nouvelle branche newtheme
. En supposant que nous sommes sur la branche newtheme
:
git checkout newtheme
git merge -s ours master
git checkout master
git merge newtheme
Poussez les changements.
git Push
Et nettoyez la branche locale newtheme
.
git branch -d newtheme
C'est ça! Vous avez réussi à remplacer votre thème. Si j'ai oublié quelque chose ou si vous avez quelque chose à ajouter, veuillez laisser un commentaire.
Si, à un moment ultérieur, vous souhaitez mettre à jour le thème pour inclure les dernières modifications en amont, il vous suffit de:
git pull upstream master
Et corrigez tous les conflits de fusion. Ici, je suppose que la télécommande upstream
est toujours définie dans le référentiel du thème (vous pouvez vérifier cela avec git remote -v
).
Jekyll v3.2 introduit thèmes basés sur des pierres précieuses (pour les plans futurs, voir ici ):
Les thèmes basés sur les gemmes permettent aux développeurs de thèmes de rendre les mises à jour accessibles à tous ceux qui ont la gemme de thème. En cas de mise à jour, les développeurs de thèmes poussent la mise à jour vers RubyGems
L'objectif des thèmes basés sur des pierres précieuses est de vous permettre d'obtenir tous les avantages d'un thème robuste et mis à jour en permanence sans que tous les fichiers du thème ne vous gênent et ne compliquent trop ce qui pourrait être votre objectif principal: la création de contenu.
L'installation d'un thème basé sur des gemmes est simple:
gem "jekyll-theme-awesome"
bundle install
._config.yml
De votre site pour activer le thème: theme: jekyll-theme-awesome
bundle exec jekyll serve
Pour changer de thème, je pense que quelque chose comme ça devrait fonctionner:
gem "jekyll-theme-new"
bundle install
_config.yml
De votre site pour référencer le nouveau thème: theme: jekyll-theme-new
bundle exec jekyll serve
bundle show jekyll-theme-awesome
) et désinstallez-le avec gem uninstall jekyll-theme-awesome
. Pour être sûr, assurez-vous que son dossier a bien été supprimé.La mise à jour des thèmes basés sur des gemmes est facile:
Si vous avez la gemme de thème, vous pouvez (si vous le souhaitez) exécuter
bundle update
Pour mettre à jour toutes les gemmes de votre projet. Ou vous pouvez exécuterbundle update <THEME>
, En le remplaçant par le nom du thème, tel queminima
, pour simplement mettre à jour la gemme de thème. Tous les nouveaux fichiers ou mises à jour créés par le développeur du thème (comme les feuilles de style ou les inclus) seront automatiquement intégrés à votre projet.
Remarque importante : au moment de la rédaction, les pages GitHub ne prennent en charge qu'un ensemble spécifique de thèmes basés sur des pierres précieuses : Architecte, Cayman, Dinky, Hacker, Leap day, Merlot, Minuit, Minima, Minimal, Modernist, Slate, Tactile, et Time machine. Parmi ceux-ci, il semble que seul Minima soit orienté blog (par exemple, il est le seul à prendre en charge Disqus intégré). Cependant, vous devriez pouvoir utiliser n'importe quel thème si vous êtes disposé à exécuter le processus de construction de Jekyll vous-même .
Une autre alternative est pages GitLab ( tutoriel , site d'exemple ).
J'ai testé ceci , mais je l'ai fait avec un projet où je n'avais rien que je voulais enregistrer, et avec des thèmes assez simples, donc cela pourrait ne pas fonctionner si bien avec la complexité accrue.
Pour la sécurité, créez une nouvelle succursale
git checkout -b newtheme
Et puis ajoutez le nouveau thème en tant que télécommande
git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git
git pull new-theme-upstream HEAD
git status
, j'espère que ces conflits ne devraient concerner que les fichiers de style que vous souhaitez remplacer. S'il y a des fichiers que vous souhaitez conserver, vous pouvez soit les modifier avec un éditeur de texte: git aura étiqueté les modifications dans le fichierPoussez vers votre origine
git Push Origin newtheme
git pull new-theme-upstream
Vous pouvez conserver vos thèmes dans des sous-modules git, sous forme de dossiers séparés, puis créer un lien symbolique entre les éléments clés de jekyll. Cela ne fonctionnera pas dans gh-pages exemple brut
blog
|
+-- theme_1/
|
+-- theme_2/
| |
| +-- _layouts/
|
+-- _layouts ln - theme_2/_layouts
De cette façon, lorsque vous changez de thème, les thèmes ne se heurtent pas.
Le moyen le plus simple de changer de thème dans une installation jekyll existante ou nouvelle est d'utiliser le plugin suivant: jekyll-remote-theme , disponible depuis novembre 2017.
Bien qu'il soit actuellement en version bêta, cela fonctionne bien et, surtout, il est déjà sur liste blanche sur les pages Github, il n'est donc pas nécessaire de créer localement, sauf si le thème demandé inclut des gemmes non prises en charge.
Par conséquent, dans le cas d'un site Web simple avec des pages et un blog, vous pouvez héberger et modifier votre contenu directement sur l'infrastructure Github et changer le thème de votre site en tapant l'adresse du nouveau thème distant. Un avantage supplémentaire est que vous pouvez tester votre contenu avec plusieurs thèmes existants avant de vous engager dans l'un d'eux.
En plus d'une commutation plus facile, la méthode jekyll-remote-theme devrait automatiquement apporter une nouvelle version du thème distant, dès que vous apportez une modification et qu'il y a une nouvelle version par le mainteneur du thème. Si le responsable du thème effectue un changement radical que vous n'aimez pas, vous êtes toujours à quelques touches d'un nouveau thème.
J'ai plusieurs installations jekyll et je l'utilise déjà sans avoir l'intention de changer à court terme, car c'est la solution la plus élégante et la plus évolutive, pour le moment.
Si votre installation jekyll existante est pure (c'est-à-dire que vous n'avez édité que les pages, les publications, la configuration), le commutateur est transparent. Si votre thème existant a des fonctionnalités spéciales mises en page (par exemple, splash.html et la nouvelle ne l'a pas), puis vos pages qui utilisent la mise en page respective deviennent orphelins (c'est-à-dire, html de base sans mise en forme spéciale). J'ai changé une installation existante qui avait été largement modifiée, j'ai donc obtenu plusieurs pages orphelines, mais je n'ai obtenu aucun des conflits de fusion git qui sont possibles avec d'autres méthodes discutées ici.