Tclssg is a full-featured extensible static site generator written in Tcl. Its intent is to make it easy to manage a static website with an optional blog. It is aimed at Tcl programmers first. It works best for websites with a page count under 1000. Websites with a few hundred pages usually build in under a minute on modest hardware. Tclssg uses Markdown for content formatting, Bootstrap 3 for layout (with Bootstrap theme support), and Tcl code embedded in HTML for templating.
- Markdown, Bootstrap themes, Tcl code for templates;
- Regular pages and blog posts [1];
- Footnotes;
- New blog post feeds: RSS, JSON Feed, and twtxt;
- SEO and usability features out of the box: site maps, canonical and previous/next links,
noindex
on collection pages. - Valid HTML5 and CSS level 3 output;
- Legacy deployment over FTP;
- Deployment over SCP or other protocols with a custom deployment command;
- Support for external comment engines (currently: Disqus);
- Relative links in the HTML output, which make it suitable for viewing over file://;
- Reasonably fast;
- Few dependencies. Experimental self-contained binaries are available for Linux, Windows, and Mac.
1. A blog post differs from a plain old page in that it has a sidebar with tags and links to other blog posts sorted by recency. The latest blog posts are featured on the blog index, and tag pages are generated to collect blog posts with the same tag.
Tclssg is known to run on Linux, FreeBSD, OpenBSD, NetBSD, macOS, and Windows 2000/XP/7/8.x/10.
To use it you will need Tcl 8.5 or newer, Tcllib, and SQLite version 3 bindings for Tcl installed. Tclssg can use tidy-html5 to make HTML prettier, but it is not required.
To install those on Debian or Ubuntu run the following command:
sudo apt install tcl tcllib libsqlite3-tcl
On Fedora, RHEL or CentOS:
su -
yum install tcl tcllib sqlite-tcl
On Windows 7 and later the recommended way to run Tclssg is to install Magicsplat Tcl/Tk for Windows. The copy of Tcl that comes with Git for Windows does not include Tcllib or an SQLite 3 module, so it will not run Tclssg out of the box.
On macOS use MacPorts or install ActiveTcl for Mac. With MacPorts:
sudo port install tcllib tcl-sqlite3
Once you have the dependencies installed clone this repository, cd
into it then run
chmod +x ssg.tcl
./ssg.tcl init
./ssg.tcl build --local
./ssg.tcl serve --browse
or on Windows
ssg.cmd init
ssg.cmd build --local
ssg.cmd serve --browse
This will create a new website project in the directory website/
based on the default project skeleton, build the website in website/output/
, and open the result in your web browser.
Write Markdown and use <!-- more -->
to designate the break between the teaser (the part of the article shown on the blog index and on tag pages) and the rest of the content. Use page settings to customize the page's output. Example:
{
title {Test page}
blogPost 1
tags {test {a long tag with spaces}}
date 2014-01-02
show {
date false
}
}
**Lorem ipsum** reprehenderit _ullamco deserunt sit eiusmod_ ut minim in id
voluptate proident enim eu aliqua sit.
<!-- more -->
Mollit ex cillum pariatur anim [exemplum](http://example.com) tempor
exercitation sed eu Excepteur dolore deserunt cupidatat aliquip irure in
fugiat eu laborum est.
For more information on how to use Tclssg read the User's guide on the project wiki.
Answers to frequently asked questions can be found on the FAQ page.
MIT. See the file LICENSE
for details.
The Tclssg logo images are copyright (c) 2014 D. Bohdan and are licensed under CC BY 4.0.
skeleton/static/images/placeholder.jpg
is cropped from a photo by Daniel Olah distributed under the Unsplash license.
The stackato-cli browse package is copyright (c) 2011-2012 ActiveState Software Inc. and is distributed under the Apache License, Version 2.0. See vendor/browse/license.txt
.
The Caius Markdown package 1.0 is copyright (c) 2014 Caius Project and is distributed under the MIT license. See vendor/markdown/markdown.tcl
.