Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

lightweight: a static site generator

PyPI Build Status Test Coverage Supported Python

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lightweight-1.0.0.dev53.tar.gz (228.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lightweight-1.0.0.dev53-py3-none-any.whl (256.9 kB view details)

Uploaded Python 3

File details

Details for the file lightweight-1.0.0.dev53.tar.gz.

File metadata

  • Download URL: lightweight-1.0.0.dev53.tar.gz
  • Upload date:
  • Size: 228.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for lightweight-1.0.0.dev53.tar.gz
Algorithm Hash digest
SHA256 9d9e3dede432e9deb787a032dc2949d17c7a6a9e59c33d56a800c22cb479d7c6
MD5 a3f322d479ca653627f84002d2c51163
BLAKE2b-256 fe6f81c6524e49c7b1d7cc72085cc99f595fc3769407b389dcedc48e13c3e37e

See more details on using hashes here.

File details

Details for the file lightweight-1.0.0.dev53-py3-none-any.whl.

File metadata

File hashes

Hashes for lightweight-1.0.0.dev53-py3-none-any.whl
Algorithm Hash digest
SHA256 6046a5fcb738c73475ad7f8692139e926136afc22be419ee5821e434c7dcf0d4
MD5 95a373c2055ae2d14736a4db5a0421d2
BLAKE2b-256 38c439f7d381eb44d761f8e03d8f80aadf271c54ea0a30199152b5a6ed4a1e58

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0.dev53 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page