created: 201308252142
creator: JeremyRuston
modified: 201308300920
modifier: JeremyRuston
tags: dev
title: TiddlyWikiFolders

As well as traditional single file wikis, TiddlyWiki5 [[under node.js|TiddlyWiki5 Node Edition]] supports wikis that are stored as a folder of individual tiddler files.

! Wiki folder files and folders

Wiki folders can contain the following files and folders:

* ''tiddlywiki.info'' - JSON file containing metadata for the wiki
* ''\tiddlers'' - folder containing tiddler files comprising the wiki
* ''\plugins'' - folder containing [[plugin folders|PluginMechanism]] to be included in the wiki

Only the ''tiddlywiki.info'' file is required, the ''tiddlers'' and ''plugins'' folders are optional. Any files and folders not listed above are ignored.

!! Content of `tiddlywiki.info` file

The `tiddlywiki.info` file in a wiki folder contains a JSON object comprising the following fields:

* ''plugins'' - an array of plugin names to be included in the wiki
* ''doNotSave'' - an array of tiddler titles that should not be saved by the FileSystemAdaptorPlugin
* ''includeWikis'' - an array of relative paths to external wiki folders to be included in the wiki

For example:

```
{
  "plugins": [
    "tiddlywiki/tiddlyweb",
    "tiddlywiki/filesystem"
  ],
  "doNotSave": [
    "$:/StoryList",
    "$:/HistoryList",
    "$:/status/IsLoggedIn",
    "$:/status/UserName"
  ],
  "includeWikis": [
    "../tw5.com"
  ]
}
```

!! Content of `tiddlers` folder

All the TiddlerFiles in the `tiddlers` folder are read into the wiki at startup. Sub-folders are scanned recursively for TiddlerFiles.

Sub-folders within the `tiddlers` folder can also be given a `tiddlywiki.files` JSON file that overrides the default processing for that folder. The file format is illustrated with this example from the D3 plugin:

```
{
  "tiddlers": [
    {
      "file": "d3.min.js",
      "fields": {
        "type": "application/javascript",
        "title": "$:/plugins/tiddlywiki/d3/d3.js",
        "module-type": "library"
      },
      "prefix": "var d3;if($tw.browser){\n",
      "suffix": "}\nexports.d3 = d3;\n"
    },
    {
      "file": "cloud/d3.layout.cloud.js",
      "fields": {
        "type": "application/javascript",
        "title": "$:/plugins/tiddlywiki/d3/d3.layout.cloud.js",
        "module-type": "library"
      }
    }
  ]
}
```

The JSON data consists of an object with a `tiddlers` property that contains an array of information about each tiddler to be loaded into the wiki. That information consists of:

* `file`: the relative or absolute path to the file to include
* `fields`: an object containing fields that override any provided in the tiddler file
* `prefix` & `suffix`: (optional) specify strings to be prefixed and suffixed to the tiddler file text content
