lightweight 1.0.0.dev53

Creator: bradpython12

Last updated:

Add to Cart

Description:

lightweight 1.0.0.dev53

lightweight: a static site generator




Code over configuration.
Documentation
Examples
Features

Jinja2 templates
Markdown rendering with YAML frontmatter
Sass/SCSS rendering
Dev server
Template project
Clean extensible API
Fast Enough
Fails Fast

Installation
Available from PyPI:
pip install lightweight

Quick Example
from lightweight import Site, SiteCli, markdown, paths, jinja, template, sass


def blog_posts(source):
post_template = template('_templates_/blog/post.html')
# Use globs to select files. # source = 'posts/**.md'
return (markdown(path, post_template) for path in paths(source))

def example(url):
site = Site(url)

# Render an index page from Jinja2 template.
site.add('index.html', jinja('index.html'))

# Render markdown blog posts.
[site.add(f'blog/{post.source_path.stem}.html', post) for post in blog_posts('posts/**.md')]
site.add('blog.html', jinja('posts.html'))

# Render SASS to CSS.
site.add('css/global.css', sass('styles/main.scss'))

# Include a copy of a directory.
site.add('img')
site.add('fonts')
site.add('js')

return site

def generate_prod():
example(url='https://example.org/').generate(out='out')


if __name__ == '__main__':
# Run CLI with `build` and `serve` commands.
SiteCli(build=example).run()

Create a new project
Initialize a new project using init command:
lw init --url https://example.org example

It accepts multiple optional arguments:
lw init -h
usage: lw init [-h] [--title TITLE] location

Generate Lightweight skeleton application

positional arguments:
location the directory to initialize site generator in

optional arguments:
-h, --help show this help message and exit
--title TITLE the title of of the generated site

Dev Server
Lightweight includes a simple static web server with live reload serving at localhost:8080:
python -m website serve

Here website is a Python module
Host and port can be changed via:
python -m website serve --host 0.0.0.0 --port 80

The live reload can be disabled with --no-live-reload flag:
python -m website serve --no-live-reload

Otherwise every served HTML file will be injected with a javascript that polls /__live_reload_id__.
The script triggers page reload when the value at that location changes.
The /__live_reload_id__ is changed after regenerating the site upon change in --source directory.
To stop the server press Ctrl+C in terminal.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.