This release is a pre-release and may not be stable for production use.
lightweight: a static site generator
Code over configuration.
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.
Metadata
Release files for lightweight 1.0.0.dev53
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lightweight-1.0.0.dev53.tar.gz | 228.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lightweight-1.0.0.dev53-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 485.2 kB
Release files / lightweight-1.0.0.dev53.tar.gz
| Download URL | lightweight-1.0.0.dev53.tar.gz |
|---|---|
| Size | 228.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d9e3dede432e9deb787a032dc2949d17c7a6a9e59c33d56a800c22cb479d7c6
|
|
BLAKE2b-256 checksum How to use checksums |
fe6f81c6524e49c7b1d7cc72085cc99f595fc3769407b389dcedc48e13c3e37e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.13
|
Release files / lightweight-1.0.0.dev53-py3-none-any.whl
| Download URL | lightweight-1.0.0.dev53-py3-none-any.whl |
|---|---|
| Size | 256.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6046a5fcb738c73475ad7f8692139e926136afc22be419ee5821e434c7dcf0d4
|
|
BLAKE2b-256 checksum How to use checksums |
38c439f7d381eb44d761f8e03d8f80aadf271c54ea0a30199152b5a6ed4a1e58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.13
|