Changer de thème dans une installation Jekyll existante
il y a de nombreux thèmes pour Jekyll, par exemple https://github.com/jekyll/jekyll/wiki/Themes.
Quelle est la façon la plus facile de passer à un nouveau thème dans une installation Jekyll existante?
5 réponses
alors que vous migrer vers une installation existante en bifurquant un nouveau thème et ensuite copier et coller manuellement 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 mash up de ressources anciennes et nouvelles, qui peuvent ne pas être du même nom, mais dans le scénario qu'ils sont (par exemple, vous n'avez pas écrasé une ancienne feuille de style que vos références post), il va provoquer des CSS mélangés styles que vous devrez débugger et réparer lentement.
Depuis que je suis en supposant que vous avez un Jekyll installer avec Git (si vous ne le faites pas vous devriez vraiment), vous pourriez créer une branche appelée new-theme
et passer à cette branche de la master
en tant que branche de travail. (Une façon simple d'avoir quelque chose comme ça est de simplement copier votre installation Jekyll et de la coller ailleurs comme old-Jekyll-install
si vous ne voulez pas traiter avec Git branches (mais vraiment, vous devriez. Voici un tutoriel qui m'a aidé à apprendre)
- extraire les fichiers pour le nouveau thème.
- copier manuellement sur
_posts
et vos modifications personnalisées. - Port-dessus de votre
_config.yml
en les comparant manuellement et en se déplaçant sur ce qui est nécessaire. - construisez le site et voyez ce que vous manquez, ce qui pourrait être foiré (par exemple dans le passé vous pourriez avoir ajouté quelques
<br \>
balises pour l'espacement et vous ne voulez pas que dans le nouveau thème.) - Fusionner avec
master
(ou le pousser à la production)
cela 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 ceci cependant est que votre dépôt ne sera pas synchronisé avec le thème repo. Donc vous n'aurez pas de mises à jour en amont. Je voudrais encore vous suggérons fourche le thème repo, port sur vos personnalisations personnelles pour votre site Jekyll, et ensuite renommer ce repo pour la production. (ceci n'utiliserait évidemment plus L'installation "existante" de Jekyll)
C'est ce que j'ai fait pour changer le thème d'un Jekyll installation. Adaptez ces instructions à vos besoins.
Tirez le nouveau thème
nous créons une nouvelle branche orpheline newtheme
et assurez-vous qu'il est vide.
git checkout --orphan newtheme
git rm -rf .
git clean -dfx
puis nous y insérons les fichiers theme en ajoutant le thème comme une télécommande en amont. Dans cet exemple, je tire le thème Pixyll de John Otander master
branche.
git remote add upstream https://github.com/johnotander/pixyll.git
git fetch upstream
git pull upstream master
construire le thème et tester il.
bundler install
jekyll serve
Fusionner vos modifications
maintenant nous fusionnons nos messages, 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
Sinon, vous pouvez copier un fichier sous un nouveau nom, par exemple de fusionner manuellement.
git show master:_config.yml > _config.yml.old
si vous avez accidentellement surdimensionné un fichier theme, vous pouvez le restaurer.
git checkout upstream/master -- about.md
Ces sont les fichiers que j'ai dû copier, fusionner, ajuster ou supprimer:
- Markdown fichiers dans le dossier racine.
- les poteaux dans le
_posts
dossier. - projets
_drafts
dossier. _config.yml
fichier de configuration.Gemfile
fichier gem.CNAME
fichier (pour les pages GitHub).Rakefile
(le cas échéant).- les fichiers favicon (le cas échéant).
- changements de thème manuels tels que comme les champs Google Analytics, Disqus, SEO (s'il y a lieu).
valider vos modifications, et n'oubliez pas de tester à nouveau le thème.
remplacer la branche principale
Enfin, nous remplaçons notre master
branche avec la nouvelle newtheme
branche. En supposant que nous sommes sur la newtheme
branche:
git checkout newtheme
git merge -s ours master
git checkout master
git merge newtheme
appuyez sur les changements.
git push
Et nettoyer le local newtheme
branche.
git branch -d newtheme
C'est ça! Vous avez remplacé avec succès votre thème. S'il y a quelque chose que j'ai manqué, ou que vous avez quelque chose à ajouter, veuillez laisser un commentaire.
mise à Jour du thème
si par la suite vous souhaitez mettre à jour le thème pour y inclure les dernières modifications en amont, il vous suffit de:
git pull upstream master
et corriger les conflits de fusion. Ici, je suppose que le upstream
remote est toujours positionné sur le dépôt du thème (vous pouvez vérifier cela avec git remote -v
).
Jekyll v3.2 introduite gem-thèmes (pour les plans futurs, voir ici):
grâce aux thèmes Gem, les développeurs de thèmes peuvent facilement faire des mises à jour disponible pour tous ceux qui ont le thème gemme. Quand il y a une mise à jour, les développeurs de thème poussent la mise à jour à RubyGems
le but des thèmes gem est de vous permettre d'obtenir tous les avantages d'un thème robuste, continuellement mis à jour sans avoir tout le thème de l' des dossiers se mettant en travers de votre chemin et compliquant ce qui pourrait être votre objectif principal: la création de contenu.
installer un thème gem est simple:
- ajouter le thème à votre Gemfile site:
gem "jekyll-theme-awesome"
- installez le thème:
bundle install
. - ajouter ce qui suit à votre site
_config.yml
pour activer le thème:theme: jekyll-theme-awesome
- Construisez votre site:
bundle exec jekyll serve
Pour changer de thème, je crois quelque chose comme ceci devrait fonctionner:
- modifier le nouveau thème dans le fichier Gemfile de votre site:
gem "jekyll-theme-new"
- installez le thème:
bundle install
- Modifier la vous du site
_config.yml
pour référencer le nouveau thème:theme: jekyll-theme-new
- Construisez votre site:
bundle exec jekyll serve
- (facultatif - désinstaller l'ancien thème de votre machine) Notez le vieux thème du dossier d'installation (
bundle show jekyll-theme-awesome
) et de le désinstaller avecgem uninstall jekyll-theme-awesome
. Pour être sur le côté sûr, assurez-vous de son dossier a été effectivement supprimé.
mise à Jour de gem sur des thèmes est facile:
Si vous avez le thème gem, vous pouvez (si vous le désirez) run
bundle update
pour mettre à jour toutes les gemmes dans votre projet. Ou vous pouvez exécuterbundle update <THEME>
, remplaçant par le nom du thème, tel queminima
juste mettre à jour le thème de la gemme. Tout nouveau fichier ou mise à jour du thème développeur a fait (comme pour les feuilles de style ou comprend) sera tiré dans votre projet automatiquement.
Note importante: au moment de l'écriture, GitHub pages supporte seulement un ensemble spécifique de thèmes gem:Architecte, Cayman, Dinky,Pirates,Bissextile, Merlot,Minuit,a Minima,Minimum,Moderniste,Ardoise, Tactile et Time machine. Parmi ceux-ci, il semble que seule la version Minima est axée sur les blogs (par exemple, C'est la seule avec le support Disqus intégré). Toutefois, vous devriez être en mesure d'utiliser n'importe quel thème si vous êtes prêt à exécutez le processus de construction Jekyll vous-même.
une Autre alternative est GitLab pages (tutoriel,site échantillon).
With GH-Pages
I testé cette, mais je l'ai fait avec un projet où je n'avais rien que je voulais sauver, et avec des thèmes assez simples, donc cela pourrait ne pas fonctionner si bien avec la complexité accrue.
pour la sécurité, créer une nouvelle branche
git checkout -b newtheme
puis ajouter le nouveau thème à distance
git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git git pull new-theme-upstream HEAD
- la partie désordonnée, vous êtes va avoir un tas de conflits de fusion. Vérifiez quels fichiers ont des conflits de fusion avec
git status
, espérons que ces conflits ne devraient être que dans des fichiers de style que vous voulez écraser. S'il y a des fichiers que vous voulez garder, vous pouvez les éditer avec un éditeur de texte: git aura étiqueté les modifications dans le fichier Push-to-votre point de départ
git push origin newtheme
- allez à la page de votre projet sur github et vous remarquerez quelque chose comme ceci:
- créer une pull-request et fusionner les nouveaux changements.
- votre projet va toujours se montrer comme étant une fourche du premier thème, et vous ne serez pas en mesure de créer des pull-requests pour l'amont du nouveau thème. Mais vous pouvez fusionner dans 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 (I pense)
Vous pouvez garder vos thèmes dans submodules, comme des dossiers distincts, puis lier des éléments clés pour jekyll. Ce ne travail 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.
la façon la plus simple de changer de thème dans une installation jekyll existante ou nouvelle est d'utiliser le plugin suivant: jekyll-à distance-thème