title: Scripts for building tiddlywiki.com

These scripts are used to build and release the content for tiddlywiki.com. They are not designed for general purpose use -- they resolve problems that are specific to the task of building tiddlywiki.com: pushing to GitHub Pages, handling the prerelease builds and bumping version numbers.

Nonetheless, you may find techniques that are useful for your own scripts.

! Hosting

https://tiddlywiki.com is served by [[GitHub Pages|https://pages.github.com]] from the repository https://github.com/Jermolene/jermolene.github.io

The scripts live in the repository https://github.com/Jermolene/build.jermolene.github.io

! Directory structure

These scripts require the following directories to be siblings:

* `build.jermolene.github.io` - a local copy of https://github.com/Jermolene/build.jermolene.github.io
* `jermolene.github.io` - a local copy of the repo https://github.com/Jermolene/jermolene.github.io
* `TiddlyWiki5` - a local copy of the repo https://github.com/Jermolene/TiddlyWiki5

The scripts are designed to be executed with the current directory being the `TiddlyWiki5` directory.

! Configuration

!! package.json

The `package.json` in the root of the `build.jermolene.github.io` repository contains a dependency declaration that specifies the latest official released version of TiddlyWiki to be used when building the release targets:

```js
  "dependencies": {
    "tiddlywiki": "5.1.2"
  }
```

!! Environment variables

Some of the scripts use the following environment variables:

* ''TW5_BUILD_MAIN_EDITION'' - the path to the wiki folder to be used as the main edition, generating `index.html` and `encrypted.html`
* ''TW5_BUILD_OUTPUT'' - the path to the output folder (defaults to `../jermolene.github.io`)
* ''TW5_BUILD_TIDDLYWIKI'' - the pathname of the `tiddlywiki.js` to be used (defaults to `../build.jermolene.github.io/node_modules/tiddlywiki/tiddlywiki.js`)

! Scripts

!! `bld.sh`

Builds the `tiddlywiki.com` target files. By default, it uses the version of tiddlywiki specified in the `package.json` file. This can be overridden with the ''TW5_BUILD_TIDDLYWIKI'' environment variable. The following command would select the latest prerelease version of tiddlywiki from the `TiddlyWiki5` directory:

```bash
    TW5_BUILD_TIDDLYWIKI=./tiddlywiki.js
```

!! `readme-bld.sh`

Builds the readme files for the `TiddlyWiki5` and `build.jermolene.github.io` repos using the released version of TiddlyWiki specified in `package.json`.

!! `prerelease-bld.sh`

Builds the `tiddlywiki.com/prerelease` target files using the latest TiddlyWiki prerelease code and special ''prerelease'' edition for the content.

!! `github-push.sh`

Pushes the latest changes to the `jermolene.github.io` directory to GitHub.

!! `dev-bld.sh`

Builds the ''dev'' prerelease edition.

!! `quick-bld.sh`

Builds the ''prerelease'' prerelease edition.

!! `tiddlyspace-upload.sh`

Builds the ''tw5tiddlyweb'' edition and uploads it to TiddlySpace.

!! `verbump.sh`

Bumps the version number of the `package.json` in the `TiddlyWiki5` repo and applies the correct version tag to the repo.

!! `npm-publish.sh`

Publishes the `TiddlyWiki5` repo to npm.

! Procedures

!! Releasing a new version of TiddlyWiki

{{Releasing a new version of TiddlyWiki}}

!! Releasing new content for TiddlyWiki

{{Releasing new content for TiddlyWiki}}
