mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-08-06 22:04:19 +00:00
Add support for static site generation
See http://five.tiddlywiki.com/static.html for an example
This commit is contained in:
parent
c24c00e8d6
commit
15a9e04a6a
5
bld.sh
5
bld.sh
@ -19,6 +19,10 @@ echo "Using TW5_BUILD_OUTPUT as [$TW5_BUILD_OUTPUT]"
|
|||||||
|
|
||||||
echo "five.tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
|
echo "five.tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
|
||||||
|
|
||||||
|
# Create the `static` directory if necessary
|
||||||
|
|
||||||
|
mkdir -p $TW5_BUILD_OUTPUT/static
|
||||||
|
|
||||||
# First,
|
# First,
|
||||||
# readme.md: the readme file for GitHub
|
# readme.md: the readme file for GitHub
|
||||||
# index.html: the main file, including content
|
# index.html: the main file, including content
|
||||||
@ -30,6 +34,7 @@ node ./tiddlywiki.js \
|
|||||||
--savetiddler ReadMe ./readme.md text/html \
|
--savetiddler ReadMe ./readme.md text/html \
|
||||||
--savetiddler $:/core/templates/tiddlywiki5.template.html $TW5_BUILD_OUTPUT/index.html text/plain \
|
--savetiddler $:/core/templates/tiddlywiki5.template.html $TW5_BUILD_OUTPUT/index.html text/plain \
|
||||||
--savetiddler $:/core/templates/static.template.html $TW5_BUILD_OUTPUT/static.html text/plain \
|
--savetiddler $:/core/templates/static.template.html $TW5_BUILD_OUTPUT/static.html text/plain \
|
||||||
|
--savetiddlers [!is[shadow]] $:/core/templates/static.tiddler.html $TW5_BUILD_OUTPUT/static text/plain \
|
||||||
|| exit 1
|
|| exit 1
|
||||||
|
|
||||||
# Second, encrypted.html: a version of the main file encrypted with the password "password"
|
# Second, encrypted.html: a version of the main file encrypted with the password "password"
|
||||||
|
54
core/modules/commands/savetiddlers.js
Normal file
54
core/modules/commands/savetiddlers.js
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*\
|
||||||
|
title: $:/core/modules/commands/savetiddlers.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: command
|
||||||
|
|
||||||
|
Command to save several tiddlers to a file
|
||||||
|
|
||||||
|
\*/
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
/*jslint node: true, browser: true */
|
||||||
|
/*global $tw: false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
exports.info = {
|
||||||
|
name: "savetiddlers",
|
||||||
|
synchronous: false
|
||||||
|
};
|
||||||
|
|
||||||
|
var Command = function(params,commander,callback) {
|
||||||
|
this.params = params;
|
||||||
|
this.commander = commander;
|
||||||
|
this.callback = callback;
|
||||||
|
};
|
||||||
|
|
||||||
|
Command.prototype.execute = function() {
|
||||||
|
if(this.params.length < 2) {
|
||||||
|
return "Missing filename";
|
||||||
|
}
|
||||||
|
var self = this,
|
||||||
|
fs = require("fs"),
|
||||||
|
path = require("path"),
|
||||||
|
wiki = this.commander.wiki,
|
||||||
|
filter = this.params[0],
|
||||||
|
template = this.params[1],
|
||||||
|
pathname = this.params[2],
|
||||||
|
type = this.params[3] || "text/html",
|
||||||
|
extension = this.params[4] || ".html",
|
||||||
|
parser = wiki.parseTiddler(template),
|
||||||
|
tiddlers = wiki.filterTiddlers(filter);
|
||||||
|
$tw.utils.each(tiddlers,function(title) {
|
||||||
|
var renderTree = new $tw.WikiRenderTree(parser,{wiki: wiki});
|
||||||
|
renderTree.execute({tiddlerTitle: title});
|
||||||
|
var text = renderTree.render(type);
|
||||||
|
fs.writeFile(path.resolve(pathname,title + extension),text,"utf8",function(err) {
|
||||||
|
self.callback(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.Command = Command;
|
||||||
|
|
||||||
|
})();
|
@ -1,12 +1,13 @@
|
|||||||
title: $:/core/templates/static.template.html
|
title: $:/core/templates/static.template.html
|
||||||
type: text/vnd.tiddlywiki-html
|
type: text/vnd.tiddlywiki-html
|
||||||
|
|
||||||
|
\define tw-wikilink-template() static/$uri_encoded$.html
|
||||||
\rules only filteredtranscludeinline transcludeinline
|
\rules only filteredtranscludeinline transcludeinline
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="generator" content="TiddlyWiki" />
|
<meta name="generator" content="TiddlyWiki" />
|
||||||
<meta name="tiddlywiki-version" content="{{version}}" />
|
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no">
|
||||||
<meta name="copyright" content="{{$:/core/copyright.txt}}" />
|
<meta name="copyright" content="{{$:/core/copyright.txt}}" />
|
||||||
<title>{{$:/core/wiki/title}}</title>
|
<title>{{$:/core/wiki/title}}</title>
|
||||||
|
36
core/templates/static.tiddler.html.tid
Normal file
36
core/templates/static.tiddler.html.tid
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
title: $:/core/templates/static.tiddler.html
|
||||||
|
|
||||||
|
\define tw-wikilink-template() $uri_encoded$.html
|
||||||
|
`<!doctype html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<meta name="generator" content="TiddlyWiki" />
|
||||||
|
<meta name="tiddlywiki-version" content="`{{$:/core/templates/version}}`" />
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
<meta name="copyright" content="`{{$:/core/copyright.txt}}`" />
|
||||||
|
<title>`{{$:/core/wiki/title}}`</title>
|
||||||
|
<div id="styleArea">
|
||||||
|
`{{{ [is[shadow]type[text/css]] ||$:/core/templates/css-tiddler}}}`
|
||||||
|
</div>
|
||||||
|
<style type="text/css">
|
||||||
|
`{{$:/core/styles/base}}`
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<section class="story-river">
|
||||||
|
<div class="tw-tiddler-frame">
|
||||||
|
<span class="title">
|
||||||
|
`<$view field="title"/>`
|
||||||
|
</span>
|
||||||
|
<div class="small">`<$view field="modifier" format="link"/>` `<$view field="modified" format="date"/>`</div>
|
||||||
|
|
||||||
|
<div class="tw-tags-wrapper">`<$list filter="[is[current]tags[]]" template="$:/templates/TagTemplate" />`</div>
|
||||||
|
|
||||||
|
<div class="body">
|
||||||
|
`<$transclude template="$:/core/templates/html-tiddler" />`
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`
|
@ -5,6 +5,7 @@ The core TiddlyWiki5 code is packaged into several distinct editions designed fo
|
|||||||
|
|
||||||
* [[TiddlyWiki5 Standalone Edition]] for working purely within the browser
|
* [[TiddlyWiki5 Standalone Edition]] for working purely within the browser
|
||||||
** Including [[TiddlyWiki5 in the Sky for TiddlySpot|TiddlySpot]]
|
** Including [[TiddlyWiki5 in the Sky for TiddlySpot|TiddlySpot]]
|
||||||
|
** And incorporating [[TiddlyWiki5 Static Site Generation]]
|
||||||
* [[TiddlyWiki5 Node Edition]] for advanced command line work
|
* [[TiddlyWiki5 Node Edition]] for advanced command line work
|
||||||
** Including [[Building classic TiddlyWiki with TiddlyWiki5]]
|
** Including [[Building classic TiddlyWiki with TiddlyWiki5]]
|
||||||
* [[TiddlyWiki5 in the Sky for TiddlyWeb]] (and TiddlySpace)
|
* [[TiddlyWiki5 in the Sky for TiddlyWeb]] (and TiddlySpace)
|
||||||
|
14
editions/tw5.com/tiddlers/commands/SaveTiddlersCommand.tid
Normal file
14
editions/tw5.com/tiddlers/commands/SaveTiddlersCommand.tid
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
title: SaveTiddlersCommand
|
||||||
|
tags: docs command
|
||||||
|
|
||||||
|
Save a set of tiddlers matching a filter as separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).
|
||||||
|
|
||||||
|
```
|
||||||
|
--savetiddlers <filter> <template> <pathname> [<type>] [<extension>]
|
||||||
|
```
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
--savetiddlers [!is[shadow]] $:/core/templates/static.tiddler.html ./static text/plain
|
||||||
|
```
|
@ -0,0 +1,16 @@
|
|||||||
|
title: TiddlyWiki5 Static Site Generation
|
||||||
|
tags: edition docs
|
||||||
|
|
||||||
|
TiddlyWiki5 can be used to generate a static HTML representation of a TiddlyWiki that doesn't need JavaScript.
|
||||||
|
|
||||||
|
! Example
|
||||||
|
|
||||||
|
You can explore a static representation of the TiddlyWiki5 site at <a href="static.html">static.html</a>. That file is a static representation of the current DefaultTiddlers. Any tiddlers that it links to are referred to via URLs of the form `/static/HelloThere.html` that point to HTML representations of individual tiddlers.
|
||||||
|
|
||||||
|
The included `bld.sh` script includes these commands that are involved in generating the sample static version of the TiddlyWiki5 site:
|
||||||
|
|
||||||
|
```
|
||||||
|
--savetiddler $:/core/templates/static.template.html $TW5_BUILD_OUTPUT/static.html text/plain \
|
||||||
|
--savetiddlers [!is[shadow]] $:/core/templates/static.tiddler.html $TW5_BUILD_OUTPUT/static text/plain \
|
||||||
|
```
|
||||||
|
The SaveTiddlerCommand saves the static version of the DefaulTiddlers and the SaveTiddlersCommand generates the HTML representations of individual tiddlers.
|
14
readme.md
14
readme.md
@ -105,6 +105,20 @@ text/html</code> </p><pre>
|
|||||||
<h3 class=''>
|
<h3 class=''>
|
||||||
<span class='tw-view-link'>
|
<span class='tw-view-link'>
|
||||||
<span>
|
<span>
|
||||||
|
SaveTiddlersCommand</span></span></h3><div>
|
||||||
|
<div class='tw-transclude'>
|
||||||
|
<p>
|
||||||
|
Save a set of tiddlers matching a filter as separate files of a specified <span>
|
||||||
|
ContentType</span> (defaults to <code>
|
||||||
|
text/html</code>) and extension (defaults to <code>
|
||||||
|
.html</code>).</p><pre>
|
||||||
|
--savetiddlers <filter> <template> <pathname> [<type>] [<extension>]</pre><p>
|
||||||
|
For example:</p><pre>
|
||||||
|
--savetiddlers [!is[shadow]] $:/core/templates/static.tiddler.html ./static text/plain</pre></div></div></span></div><div class='tw-list-element'>
|
||||||
|
<span class='tw-transclude'>
|
||||||
|
<h3 class=''>
|
||||||
|
<span class='tw-view-link'>
|
||||||
|
<span>
|
||||||
ServerCommand</span></span></h3><div>
|
ServerCommand</span></span></h3><div>
|
||||||
<div class='tw-transclude'>
|
<div class='tw-transclude'>
|
||||||
<p>
|
<p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user