Exporting Static Sites From Tiddlywiki
Part 1: Installation, Set-up and Basic Commands
Part: 0 1 2 3 4 5 6 7 8 9 10
Summary
In the first section, we're going to install all the software needed to run the tiddlywiki server and then run a basic export with the built-in templates.
What we'll get is a static site that contains all of our tiddlers, styled just like they are when viewed in a vanilla Tiddlywiki.
Installing Node, NPM and Tiddlywiki
If you don't already have it, download and install Node.js, which comes with the Node Package Manager (NPM) included.
If you're not sure, you can check by typing.
node -v
npm -v
Tiddlywiki can then be installed as a package from the NPM library, like so.
npm install -g tiddlywiki
where the -g
flag makes it available globally. You can check it worked by getting the version
tiddlywiki --version
nb:It's a fairly common problem to have npm
installed with the wrong permissions, meaning one or more of these commands could fail. If it does, you can probably just add sudo
to the start of the command, although it's probably better to fix the permissions if you know how.
Running the Tiddlywiki server
Now we can use the tiddlywiki
command at the command line.
First we need to initialise a directory for working with tiddlywiki. Make a directory with a suitable name and cd
into it.
mkdir myWiki
cd myWiki
We can then run tiddlywiki, passing it the --init server
argument, and have it generate the basic files that need to exist for a properly formatted wiki to be served from here. If you miss this step you'll get a wiki that 'works' but doesn't have either formatting or the ability to save itself (ie; not a very useful wiki).
tiddlywiki --init server
You should now see a tiddlywiki.info
file in your current directory.
Now, from the same directory, run the server.
tiddlywiki --server
And you should see
Serving on 127.0.0.1:8080
(press ctrl-C to exit)
Visit that url in your browser (127.0.0.1:8080
where 127.0.0.1
is the address and 8080
is the port).
If you want to specify a port number, do the following, swapping 8888
for the number of your choice
tiddlywiki --server port 8888
There's no magic to the port number - they're just unique identifiers used for each different service that wants to connect at the same time. The only requirement is that you choose an integer in the range 1025 to 65536 that isn't being used by another service.
If you want to run multiple Tiddlywiki servers at the same time, you need to put them on different ports.
Creating Some Content
A Tiddlywiki server wiki starts out completely empty. So that we can see our pages get generated, go ahead and create a few tiddlers.
Be sure that to create a tiddler called index
- when your site gets built, this will become index.html
and it will be your landing page.
Exporting static pages
Now we want to export our tiddlers to static files and see what happens. To do this, we'll open another terminal window or tab (because we still have our server running in the other one) and, after making sure that we're in the top level directory of our server (the one that contains the tiddlers folder) type
tiddlywiki --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain
List the contents of the directory and you should see that a new folder has been created, called output
, and in it, another directory called static
.
And in that directory, we'll find our files, one for each tiddler you created above. Open one up in a browser and you should see your content, but it will look pretty plain.
Note
that from now on you shouldn't ever be tempted to edit these html files directly, because they're going to get blown away and re-made every time we build our site.
Adding Styling
Now (make sure you navigate back to the same directory as before) type this command.
tiddlywiki --rendertiddler $:/core/templates/static.template.css static/static.css text/plain
This generates a css
file alongside your static pages in output/static
. Go and look at one of them again and you should see that now they are styled, as close to the original wiki as possible.
Simplfiying the Build Process
Instead of running each of these two commands separately each time, we could join them together using the Unix &&
operator, like so
tiddlywiki --rendertiddlers [!is[system]tag[Live]] $:/core/templates/static.tiddler.html static text/plain && tiddlywiki --rendertiddler $:/core/templates/static.template.css static/static.css text/plain
but we can actually do better and pass them as sequential commands to tiddlywiki, like this.
tiddlywiki --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain --rendertiddler $:/core/templates/static.template.css static/static.css text/plain
Better still, we can put this in a script file and run it each time we want to rebuild our site. If we name the file build.sh
we run it by typing ./build.sh
from the directory that contains it.
note:
if you have the finder open next to the terminal, with the output folder in view, you should be able to see this script file destroying the static
directory and rebuilding it. If it ever appears that your site hasn't been rebuilt, refresh your browser.
Running a local web server
Up til now you may have just been accessing your static pages through the file api (by double clicking them and having them open).
Eventually, you will want to run an actual web server to view these files over HTTP, even though they are local, because some things don't work right over the file api (for example, images may not embed correctly)
You could use any old http server - you probably have a couple installed on your machine without even realising it - but since we're already using npm
I'll suggest that you use the Node.js http-server
.
Install it just as we did Tiddlywiki
npm install -g http-server
and run it using
http-server
To specify a port, add the -p
flag
http-server -p 7777
Now you can run a static server from the output/static
folder, view it in a separate browser window/tab and refresh it each time you build your site to see the new result.