Pregunta
estoy empezando con Generador de sitios estáticos Jekyll y me gustaría usar recarga en vivo con eso.Sé que Jekyll tiene un generador y comandos de servidor, y Live Reload puede ejecutar varios compiladores y comandos personalizados.¿Cómo los configuro para que funcionen juntos?
Solución
El enfoque más simple que he encontrado que funciona es usar dos ventanas de terminal:Uno para jekyll serve --watch
y uno para guard
.
Probé el enfoque guard-jekyll-plus sugerido por Nobu pero tuve un montón de errores.
Como shumushin señaló, Jekyll puede manejar el proceso de reconstrucción automática, simplemente ejecútelo usando jekyll serve --watch
Ahora, para que LiveReload funcione, ejecute guard con guard-livereload en una segunda ventana de terminal.Esto es básicamente lo mismo que La respuesta de Jan Segre, pero sin guard-jekyll
.
Mi Guardfile
Se ve como esto:
guard 'livereload' do
watch(/^_site/)
end
Y mi Gemfile
:
gem 'jekyll'
gem 'guard'
gem 'guard-livereload'
Nota:Aún necesitas incluir el script livereload en tu index.html
página;es el "pegamento" que une guard-livereload
y el navegador juntos.
<script src="http://localhost:35729/livereload.js"></script>
Otros consejos
Para uso de jekyll 1.0+:
jekyll serve --watch
Consulte Jekyll: uso básico para obtener más detalles y opciones.
Hay guard-livereload que puede usar con guard-jekyll y centralice el proceso de visualización con guard , un ejemplo sería (no lo he probado):
- Instale guard-jekyll, ya sea a través de gem o bundler
- Instale guard-livereload, ya sea a través de gem o bundler
Init guard-jekyll
guard init jekyll
Agregue esto a su Guardfile:
guard 'livereload' do
watch(%r{_site/.+})
end
Puede adaptar lo anterior para que se adapte mejor a su proyecto y probablemente ya sepa que tiene que incluir la recarga en vivo secuencia de comandos en su página:
<script src="http://localhost:35729/livereload.js"></script>
Ah, y para empezar con todo el lío de la visualización:
guard
LiveReload está integrado en Jekyll 3.7+.
jekyll serve --livereload
También puede configurar el puerto, el retraso y los archivos ignorados de LiveReload.Consulte jekyll help serve
.
ACTUALIZACIÓN: esto ya no funciona con la última versión de Jekyll
cd your/site/folder
jekyll --server --auto
Esta publicación explica una forma más limpia: Configuración de LiveReload con Jekyll
Gemfile:
gem 'jekyll'
gem 'guard'
gem 'guard-jekyll-plus'
gem 'guard-livereload'
Guardfile:
guard 'jekyll-plus', :serve => true do
watch /.*/
ignore /^_site/
end
guard 'livereload' do
watch /.*/
end
Instale cualquier extensión de navegador LiveReload .Luego ejecute guard
.
Escribí un complemento Jekyll llamado Hawkins que incorpora LiveReload en el Jekyll watch
proceso.Funciona con Jekyll 3.1 y superiores.
Simplemente agregue
group :jekyll_plugins do
gem 'hawkins'
end
a su Gemfile (y luego un bundle install
).Desde allí puedes correr jekyll liveserve
.Hawkins modificará el head
secciones de sus páginas para incluir los componentes necesarios para LiveReload, y cuando Jekyll detecta un cambio de página, Hawkins enviará un mensaje a su navegador a través de WebSockets.Tenga en cuenta que necesitará un navegador que admita WebSockets.Para recargas muy rápidas, puedes usar el nuevo Jekyll. --incremental
opción que solo regenerará las páginas modificadas.
Comience ejecutando jekyll normalmente en la carpeta de su sitio:
cd your/site/folder
jekyll
Por defecto Jekyll genera una carpeta llamada _site
dentro de eso (your/site/folder/_site
).
Dile a LiveReload que vea eso. _site
carpeta.
Acabo de comenzar a usar las páginas de GitHub hoy y quería poder usar la recarga en vivo con Jekyll.Lo conseguí funcionando y escribí mi primera publicación sobre Creación de páginas de GitHub con Jekyll y LiveReload .
Utiliza Grunt con el complemento grunt-contrib-watch
en lugar del comando serve
de Jekyll; funciona bien para mí.Espero que también funcione para usted.
Puedes usar solo jekyll serve -w
, una opción que prefiero porque soy vago.
Para Live Reload, Elimina Jekyll Admin de Gemfile en el directorio raíz de tu proyecto y funciona a la perfección.