Presta atención porque en este post encontrarás el arreglo que buscas.
Solución:
Esto es lo que hice para cambiar el tema de una instalación de Jekyll existente. Ajuste estas instrucciones para que se adapten a sus necesidades.
Tira del nuevo tema
Creamos una nueva sucursal huérfana newtheme
y asegúrese de que esté vacío.
git checkout --orphan newtheme
git rm -rf .
git clean -dfx
Luego, incorporamos los archivos del tema agregando el tema como un control remoto ascendente. En este ejemplo, extraigo el tema Pixyll de John Otander master
rama.
git remote add upstream https://github.com/johnotander/pixyll.git
git fetch upstream
git pull upstream master
Crea el tema y pruébalo.
bundler install
jekyll serve
Fusiona tus cambios
Ahora fusionamos nuestras publicaciones, configuración, etc. Puedes usar Git checkout
para copiar un archivo o carpeta de su antiguo sitio Jekyll. Tenga en cuenta que esto sobrescribirá el archivo del tema si existe.
git checkout master -- _posts
Alternativamente, puede copiar un archivo con un nuevo nombre, 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, fusionar, ajustar o eliminar:
- Archivos de Markdown en la carpeta raíz.
- Publicaciones en el
_posts
carpeta. - Borradores en el
_drafts
carpeta. - los
_config.yml
archivo de configuración. - los
Gemfile
archivo de gema. - los
CNAME
archivo (para páginas de GitHub). - los
Rakefile
(Si alguna). - Los archivos de favicon (si los hay).
- Cambios de tema manuales como Google Analytics, Disqus, campos de SEO (si corresponde).
Confirme sus cambios y no olvide volver a probar el tema.
Reemplazar la rama maestra
Finalmente reemplazamos nuestro master
rama con el nuevo newtheme
rama. Asumiendo que estamos en el newtheme
rama:
git checkout newtheme
git merge -s ours master
git checkout master
git merge newtheme
Empuje los cambios.
git push
Y limpiar el local newtheme
rama.
git branch -d newtheme
¡Eso es todo! Has reemplazado tu tema con éxito. Si hay algo que me perdí o si tiene algo que agregar, deje un comentario.
Actualizando el tema
Si en algún momento posterior desea actualizar el tema para incluir los últimos cambios ascendentes, simplemente:
git pull upstream master
Y solucione cualquier conflicto de fusión. Aquí asumo el upstream
remoto todavía está configurado en el repositorio del tema (puede verificar esto con git remote -v
).
Mientras tu podría migrar a una instalación existente bifurcando un nuevo tema y luego copiar y pegar manualmente recursos como CSS, JS, HTML en el _includes
, _layouts
y otros archivos que pueda necesitar, probablemente esta no sea una gran idea, ya que termina teniendo una combinación de recursos antiguos y nuevos, que pueden no tener el mismo nombre, pero en el escenario en el que lo son (por ejemplo, no no sobrescriba una hoja de estilo antigua a la que hace referencia su publicación), causará mixed hasta estilos CSS que tendrá que depurar y corregir lentamente.
Dado que supongo que tiene una instalación de Jekyll con Git (si no es así, debería hacerlo), puede crear una rama llamada new-theme
y cambiar a esa rama desde el master
como rama de trabajo. (Una forma sencilla de tener algo como esto es simplemente copiar toda la instalación de Jekyll y pegarla en otro lugar como old-Jekyll-install
si no quieres lidiar con las ramas de Git (pero realmente deberías. Aquí tienes un tutorial que me ayudó a aprender)
- Baje los archivos del nuevo tema.
- Copiar manualmente
_posts
y sus cambios personalizados. - Transfiera su
_config.yml
comparándolos manualmente y pasando por lo que sea necesario. - Cree el sitio y vea lo que se está perdiendo, lo que podría estar estropeado (por ejemplo, en el pasado, podría haber agregado algunos
etiquetas para el espaciado y no quieres eso en el nuevo tema). - Fusionarse con
master
(o llevarlo a producción)
Dicho esto, todo esto es bastante manual y una molestia, pero al menos no tendrá que lidiar con conflictos en los recursos. los Abajo Sin embargo, de hacer esto es que su repositorio no se sincronizará con el repositorio de temas. Por lo tanto, no recibirá actualizaciones ascendentes. Todavía te sugiero que tenedor el repositorio de temas, transfiera sus personalizaciones personales para su sitio Jekyll y luego cambie el nombre de ese repositorio para producción. (esto, por supuesto, ya no usaría la instalación de Jekyll ‘existente’)
Jekyll v3.2 introdujo temas basados en gemas (para planes futuros, consulte aquí):
Los temas basados en gemas facilitan a los desarrolladores de temas poner actualizaciones a disposición de cualquiera que tenga la gema del tema. Cuando hay una actualización, los desarrolladores de temas envían 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 que todos los archivos del tema se interpongan en su camino y compliquen demasiado lo que podría ser su enfoque principal: crear contenido.
Instalar un tema basado en gemas es simple:
- Agregue el tema al archivo Gemfile de su sitio:
gem "jekyll-theme-awesome"
- Instale el tema:
bundle install
. - Agregue lo siguiente a su sitio
_config.yml
para activar el tema:theme: jekyll-theme-awesome
- Construye tu sitio:
bundle exec jekyll serve
Para cambiar de tema, creo que algo como esto debería funcionar:
- Cambie al nuevo tema en el Gemfile de su sitio:
gem "jekyll-theme-new"
- Instale el tema:
bundle install
- Cambia tu sitio
_config.yml
para hacer referencia al nuevo tema:theme: jekyll-theme-new
- Construye tu sitio:
bundle exec jekyll serve
- (opcional: desinstale el tema antiguo de su máquina) Anote la carpeta de instalación del tema antiguo (
bundle show jekyll-theme-awesome
) y desinstálelo congem uninstall jekyll-theme-awesome
. Para estar seguro, asegúrese de que su carpeta haya sido eliminada.
Actualizar temas basados en gemas es fácil:
Si tiene la joya temática, puede (si lo desea) ejecutar
bundle update
para actualizar todas las gemas en su proyecto. O puedes correrbundle update
, reemplazándolo por el nombre del tema, comominima
, para actualizar la joya del tema. Todos los archivos nuevos o actualizaciones que haya realizado el desarrollador del tema (como hojas de estilo o inclusiones) se incluirán en su proyecto automáticamente.
Nota IMPORTANTE: en el momento de escribir este artículo, las páginas de GitHub solo admiten un conjunto específico de temas basados en gemas: Arquitecto, Caimán, Mono, Hacker, Día intercalar, Merlot, Medianoche, Mínimos, Mínimo, Modernista, Pizarra, Táctil, y Máquina del tiempo. De ellos, parece que solo Minima está orientado a blogs (por ejemplo, es el único con soporte integrado para Disqus). Sin embargo, debería poder usar cualquier tema si está dispuesto a ejecutar el proceso de compilación de Jekyll usted mismo.
Otra alternativa son las páginas de GitLab (tutorial, sitio de muestra).
Si guardas algún titubeo o disposición de progresar nuestro tutorial puedes ejecutar una crítica y con mucho gusto lo observaremos.