web-dev-qa-db-fra.com

Changer de thème dans une installation Jekyll existante

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?

42
majom

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)

  1. Déroulez les fichiers du nouveau thème.
  2. Copiez manuellement sur _posts et vos modifications personnalisées.
  3. Portez votre _config.yml en les comparant manuellement et en déplaçant ce qui est nécessaire.
  4. Construisez le site et voyez ce qui vous manque, ce qui pourrait être gâché (par exemple, dans le passé, vous pourriez avoir ajouté quelques <br \> balises d'espacement et vous ne voulez pas cela dans le nouveau thème).
  5. Fusionner avec 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)

17
matrixanomaly

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.

Tirez le nouveau thème

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

Fusionnez vos modifications

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:

  • Fichiers Markdown dans le dossier racine.
  • Messages dans le _posts dossier.
  • Brouillons dans le _drafts dossier.
  • Le _config.yml fichier de configuration.
  • Le fichier Gemfile gem.
  • Le fichier CNAME (pour les pages GitHub).
  • Rakefile (le cas échéant).
  • Les fichiers favicon (le cas échéant).
  • Modifications manuelles du thème telles que Google Analytics, Disqus, champs SEO (le cas échéant).

Validez vos modifications et n'oubliez pas de tester à nouveau le thème.

Remplacer la branche principale

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.


Mise à jour du thème

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).

35

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:

  1. Ajoutez le thème au Gemfile de votre site: gem "jekyll-theme-awesome"
  2. Installez le thème: bundle install.
  3. Ajoutez ce qui suit au _config.yml De votre site pour activer le thème: theme: jekyll-theme-awesome
  4. Créez votre site: bundle exec jekyll serve

Pour changer de thème, je pense que quelque chose comme ça devrait fonctionner:

  1. Passez au nouveau thème dans le Gemfile de votre site: gem "jekyll-theme-new"
  2. Installez le thème: bundle install
  3. Modifiez le _config.yml De votre site pour référencer le nouveau thème: theme: jekyll-theme-new
  4. Créez votre site: bundle exec jekyll serve
  5. (facultatif - désinstallez l'ancien thème de votre machine) Notez le dossier d'installation de l'ancien thème (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écuter bundle update <THEME>, En le remplaçant par le nom du thème, tel que minima, 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 ).

9
Ohad Schneider

Avec GH-Pages

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.

  1. Pour la sécurité, créez une nouvelle succursale

    git checkout -b newtheme
    
  2. 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
    
  3. La partie désordonnée, vous allez avoir un tas de conflits de fusion. Vérifiez quels fichiers ont des conflits de fusion avec 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 fichier
  4. Poussez vers votre origine

    git Push Origin newtheme
    
  5. Accédez à la page de votre projet sur github et vous remarquerez quelque chose comme ceci:
  6. Créez une pull-request et fusionnez les nouvelles modifications dans.
  7. Votre projet va toujours apparaître comme étant un fork du premier thème, et vous ne pourrez pas créer de pull-request pour l'amont du nouveau thème. Mais vous pouvez fusionner de nouvelles mises à jour pour votre nouveau thème en utilisant git pull new-theme-upstream

Si vous n'utilisez pas gh-pages ou si vous construisez jekyll localement avant de pousser vers github (je pense)

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.

3
raphael

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.

1
epidrome