tutorial site pages new how ruby jekyll jekyll-bootstrap

ruby - site - Cambiar el tema en una instalación existente de Jekyll



jekyll themes (5)

Con GH-Pages

Probé esto , pero lo hice con un proyecto en el que no tenía nada que quisiera guardar, y con temas bastante simples, por lo que podría no funcionar tan bien con la mayor complejidad.

  1. Por seguridad, crea una nueva sucursal

    git checkout -b newtheme

  2. Y luego agrega el nuevo tema como un control remoto

    git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git git pull new-theme-upstream HEAD

  3. La parte desordenada, vas a tener un montón de conflictos de fusión. Compruebe qué archivos tienen conflictos de combinación con el git status , es de esperar que estos conflictos solo estén en los archivos de estilo que desee sobrescribir. Si hay archivos que desea conservar, puede editarlos con un editor de texto: git etiquetará los cambios en el archivo
  4. Empuja hacia tu origen

    git push origin newtheme

  5. Ve a la página de tu proyecto en github y verás algo como esto:
  6. Cree una solicitud de extracción y combine los nuevos cambios en.
  7. Su proyecto todavía se mostrará como una bifurcación del primer tema, y ​​no podrá crear solicitudes de extracción para el inicio del nuevo tema. Pero puede combinar nuevas actualizaciones para su nuevo tema usando git pull new-theme-upstream

Si no estás usando gh-páginas o si estás construyendo jekyll localmente antes de presionar a github (creo)

Puedes guardar tus temas en submódulos de git, como carpetas separadas y luego enlazar los elementos clave de jekyll. Esto no funcionará en el blog | +-- theme_1/ | +-- theme_2/ | | | +-- _layouts/ | +-- _layouts ln - theme_2/_layouts ejemplo crudo gh-pages blog | +-- theme_1/ | +-- theme_2/ | | | +-- _layouts/ | +-- _layouts ln - theme_2/_layouts blog | +-- theme_1/ | +-- theme_2/ | | | +-- _layouts/ | +-- _layouts ln - theme_2/_layouts blog | +-- theme_1/ | +-- theme_2/ | | | +-- _layouts/ | +-- _layouts ln - theme_2/_layouts esta forma, al cambiar los temas, los temas no colisionan.

Hay muchos temas para Jekyll, por ejemplo, https://github.com/jekyll/jekyll/wiki/Themes .

¿Cuál es la forma más fácil de cambiar a un nuevo tema en una instalación Jekyll EXISTENTE?


Esto es lo que hice para cambiar el tema de una instalación existente de Jekyll. Ajuste estas instrucciones para satisfacer sus necesidades.

Tire del nuevo tema

Creamos una nueva rama huérfana newtheme y nos aseguramos de que esté vacía.

git checkout --orphan newtheme git rm -rf . git clean -dfx

Luego incorporamos los archivos de tema agregando el tema como un control remoto en sentido ascendente. En este ejemplo, selecciono la rama master del tema Pixyll de John Otander.

git remote add upstream https://github.com/johnotander/pixyll.git git fetch upstream git pull upstream master

Construye el tema y pruébalo.

bundler install jekyll serve

Combina tus cambios

Ahora fusionamos nuestras publicaciones, configuración, etc. Puede usar el proceso de checkout Git para copiar un archivo o carpeta de su antiguo sitio de Jekyll. Tenga en cuenta que esto sobrescribirá el archivo del tema si existe.

git checkout master -- _posts

Alternativamente, puede copiar un archivo con un nombre nuevo, por ejemplo, para fusionarlo manualmente.

git show master:_config.yml > _config.yml.old

Si accidentalmente sobrescribió un archivo de tema, puede restaurarlo.

git checkout upstream/master -- about.md

Estos son los archivos que tuve que copiar, combinar, ajustar o eliminar:

  • Marque los archivos en la carpeta raíz.
  • Publicaciones en la carpeta _posts .
  • Borradores en la carpeta _drafts .
  • El archivo de configuración _config.yml .
  • El archivo gema Gemfile .
  • El archivo CNAME (para páginas GitHub).
  • El Rakefile (si hay alguno).
  • Los archivos de favicon (si los hay).
  • Cambios de tema manuales como Google Analytics, Disqus, campos de SEO (si los hay).

Confirme sus cambios y no olvide volver a probar el tema.

Reemplazar la rama maestra

Finalmente, reemplazamos nuestra rama master existente con la nueva rama newtheme . Suponiendo que estamos en la rama newtheme :

git checkout newtheme git merge -s ours master git checkout master git merge newtheme

Empuja los cambios.

git push

Y limpie la rama newtheme local.

git branch -d newtheme

¡Eso es! Has reemplazado tu tema con éxito. Si hay algo que extrañé, o si tiene algo que agregar, por favor deje un comentario.

Actualizando el tema

Si en algún momento posterior desea actualizar el tema para incluir los últimos cambios preliminares, simplemente:

git pull upstream master

Y arregla cualquier conflicto de fusión. Aquí supongo que el control remoto en upstream todavía está configurado en el repositorio del tema (puede verificarlo con git remote -v ).


La forma más fácil de cambiar el tema en una instalación nueva o existente de jekyll es usar el siguiente complemento: jekyll-remote-theme , que está disponible desde noviembre de 2017.

Aunque actualmente está en versión beta, funciona bien y, lo más importante, ya figura en la lista blanca de las páginas de Github, por lo que no es necesario crearlo localmente, a menos que el tema solicitado incluya gemas no compatibles.

Por lo tanto, en el caso de un sitio web simple con páginas y blog, puede alojar y editar su contenido directamente en la infraestructura de Github y cambiar el tema de su sitio ingresando la dirección del nuevo tema remoto. Un beneficio adicional es que puede probar su contenido con varios temas existentes antes de comprometerse con uno de ellos.

Además de un cambio más fácil, el método de jekyll-remote-theme debería traer automáticamente una nueva versión del tema remoto , tan pronto como realice un cambio y haya una nueva versión del mantenedor del tema. Si el mantenedor del tema hace un cambio radical que no te gusta, estarás siempre a unas pocas teclas de distancia de un nuevo tema.

Tengo varias instalaciones de jekyll y ya las estoy usando sin tener la intención de cambiar a corto plazo, ya que es la solución más elegante y de futuro, por el momento.

Si su instalación actual de jekyll es pura (es decir, ha editado solo páginas, publicaciones, configuración), entonces el cambio es perfecto. Si su tema actual tiene diseños especiales (por ejemplo, splash.html y el nuevo no lo tiene), entonces las páginas que emplean el diseño respectivo quedan huérfanas (es decir, html básico sin formato especial). Cambié una instalación existente que había sido editada extensivamente, así que obtuve varias páginas huérfanas, pero no obtuve ninguno de los conflictos de fusión de git que son posibles con otros métodos que se tratan aquí.


Jekyll v3.2 introdujo temas basados ​​en gemas (para planes a futuro ver here ):

Los temas basados ​​en gemas facilitan que los desarrolladores de temas pongan las actualizaciones a disposición de cualquiera que tenga el tema gema. Cuando hay una actualización, los desarrolladores del tema empujan la actualización a RubyGems

El objetivo de los temas basados ​​en gemas es permitirle obtener todos los beneficios de un tema robusto y continuamente actualizado sin tener todos los archivos del tema interponiéndose en su camino y complicando demasiado lo que podría ser su enfoque principal: crear contenido.

La instalación de un tema basado en gemas es simple:

  1. Agregue el tema al Gemfile de su sitio: gem "jekyll-theme-awesome"
  2. Instalar el tema: bundle install .
  3. Agregue lo siguiente a _config.yml su sitio para activar el tema: theme: jekyll-theme-awesome
  4. Construya su sitio: bundle exec jekyll serve

Para cambiar los temas, creo que algo así debería funcionar:

  1. Cambie al nuevo tema en el Gemfile de su sitio: gem "jekyll-theme-new"
  2. Instalar el tema: bundle install
  3. Cambie el _config.yml su sitio para hacer referencia al nuevo tema: theme: jekyll-theme-new
  4. Construya su sitio: bundle exec jekyll serve
  5. (opcional: desinstale el tema anterior de su máquina) Anote la carpeta de instalación del tema anterior ( bundle show jekyll-theme-awesome ) y desinstálelo con gem uninstall jekyll-theme-awesome . Para estar seguro, asegúrese de que su carpeta haya sido eliminada.

La actualización de temas basados ​​en gem es fácil:

Si tiene la gema del tema, puede (si lo desea) ejecutar la bundle update para actualizar todas las gemas de su proyecto. O puede ejecutar la bundle update <THEME> , reemplazando con el nombre del tema, como minima , para actualizar la gema del tema. Cualquier archivo nuevo o actualización que el desarrollador del tema haya realizado (como hojas de estilo o inclusiones) se insertará automáticamente en su proyecto.

Nota importante : en el momento de escribir, las páginas de GitHub solo admiten un conjunto específico de temas basados ​​en gemas : Arquitecto , Caimán , Dinky , Hacker , Día bisiesto , Merlot , Medianoche , Minima , Mínimo , Modernista , Pizarra , Táctil y Máquina del tiempo . De ellos, parece que solo Minima está orientado al blog (por ejemplo, es el único con soporte integrado de Disqus). Sin embargo, debería poder utilizar cualquier tema si está dispuesto a ejecutar el proceso de compilación Jekyll usted mismo .

Otra alternativa son las páginas de GitLab ( tutorial , sitio de muestra ).


Si bien puede migrar a una instalación existente creando un nuevo tema y luego copiar y pegar manualmente recursos como CSS, JS, HTML en los _includes , _layouts y otros archivos que pueda necesitar, probablemente esta no sea una gran idea cuando termine. tener una mezcla de recursos antiguos y nuevos, que pueden no ser del mismo nombre, pero en el escenario en que se encuentran (por ejemplo, no sobrescribió una hoja de estilo anterior a la que hace referencia su publicación), provocará un CSS mezclado estilos que deberá depurar y solucionar lentamente.

Como asumo que tienes una instalación de Jekyll con Git (si no es así, deberías), podrías crear una rama llamada new-theme y cambiar a esa rama del master como la rama de trabajo. (Una forma simple de tener algo como esto es simplemente copiar toda tu instalación de Jekyll y pegarla en otro lugar como old-Jekyll-install si no quieres ocuparte de las ramas de Git (pero realmente, deberías hacerlo). Aquí hay un tutorial que ayudó yo aprenda)

  1. Tire hacia abajo los archivos para el nuevo tema.
  2. Copie manualmente los _posts y sus cambios personalizados.
  3. Puerto sobre su _config.yml comparándolos manualmente y moviéndose sobre lo que es necesario.
  4. Cree el sitio y vea lo que se está perdiendo, lo que podría estar mal (por ejemplo, en el pasado, podría haber agregado algunas etiquetas <br /> para el espaciado y no desea eso en el nuevo tema).
  5. Fusionar con el master (o empujarlo a la producción)

Dicho esto, todo esto es bastante manual y un dolor, pero al menos no tendrás que lidiar con conflictos en los recursos. La desventaja de hacer esto es que su repositorio no se sincronizará con el repositorio del tema. Por lo tanto, no obtendrás actualizaciones en sentido ascendente. Aún así, sugiero que dedique el repositorio del tema, transfiera el puerto a sus personalizaciones personales para su sitio Jekyll, y luego cambie el nombre del repositorio por producción. (Esto por supuesto ya no estaría usando la instalación ''existente'' de Jekyll)