Merge pull request #2526 from johnfraney/livereload

Add livereload invoke task. Fixes #1326
This commit is contained in:
Justin Mayer 2019-06-19 09:49:24 +02:00 committed by GitHub
commit c61665b85d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 0 deletions

View file

@ -146,6 +146,12 @@ http://localhost:8000/::
invoke serve
To serve the generated site with automatic browser reloading every time a
change is detected, first ``pip install livereload``, then use the
following command::
invoke livereload
If during the ``pelican-quickstart`` process you answered "yes" when asked
whether you want to upload your site via SSH, you can use the following command
to publish your site via rsync over SSH::

View file

@ -8,6 +8,12 @@ import datetime
from invoke import task
from invoke.util import cd
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file('pelicanconf.py')
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
# Local path configuration (can be absolute or relative to tasks.py)
@ -80,6 +86,20 @@ def preview(c):
"""Build production version of site"""
c.run('pelican -s publishconf.py')
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
build(c)
server = Server()
deploy_path = CONFIG['deploy_path']
content_path = SETTINGS['PATH']
content_file_extensions = ['.md', '.rst']
for file_extension in content_file_extensions:
content_blob = '{0}/**/*{1}'.format(content_path, file_extension)
server.watch(content_blob, lambda: build(c))
server.serve(root=deploy_path)
{% if cloudfiles %}
@task
def cf_upload(c):