wikity
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

Latest version Last updated npm downloads

Wikity

Wikity is a tool that allows you to use Wikitext (used by Wikipedia, Fandom, etc) as a templating language to create HTML pages, useful in build tools such as Eleventy.

Install

Wikity is available on npm.

Local install Global install
npm install wikity npm install -g wikity

API

Node

  • wikity.compile(folder?: string, options?: object): void

    • Compile all Wikitext (.wiki) files from an input folder (defaults to the current directory, .) into HTML.
  • wikity.eleventyPlugin(folder?: string, options?: object): void

    • An implementation of compile() for use with Eleventy's addPlugin API. Identical to compile() except that option eleventy is true by default.
  • wikity.parse(input: string, options?: object): string

    • Parse raw wikitext input into HTML. Only option available is templatesFolder.
  • Options:

    • outputFolder?: string
      • Where outputted HTML files shall be placed (default: wikity-out).
    • templatesFolder?: string
      • What folder to place templates in (default: 'templates').
    • imagesFolder?: string
      • What folder to place images in (default: 'images'). Make sure to pass through this folder to your build output if applicable.
  • eleventy?: boolean

    • Whether front matter will be added to the outputted HTML for Eleventy to read (default: false).
    • defaultStyles?: boolean
      • Whether to use default wiki styling (default: true).
    • customStyles?: string
      • Custom CSS to style the wiki pages (default: '').
const wikity = require('wikity');

// compile all .wiki files inside this directory
wikity.compile();

// parse wikitext from an input string
let html = wikity.parse(`'''bold''' [[link|text]]`); // <b>bold</b> <a href="link"...>text</a>

Use Wikity along with Eleventy to compile your wiki files during the build process:

// .eleventy.js (eleventy's configuration file)
const wikity = require('wikity');
module.exports = function (eleventyConfig) {
    const wikiFolder = '.'; // current directory
    const wikityOptions = {templatesFolder: 'templates', imagesFolder: 'images'}; // set as needed
    const wikityPlugin = () => wikity.eleventyPlugin(wikiFolder, wikityOptions);
    eleventyConfig.addPlugin(wikityPlugin);
    eleventyConfig.addPassthroughCopy({[imagesFolder]: 'wiki/' + imagesFolder}); // Eleventy does not pass through images by default
}

Command-line

$ wikity help
Display a help message
$ wikity compile [<folder>] [-o <folder>] [-t <folder>] [-e] [-d]
Compile Wikity with various options
$ wikity parse <input>
Parse raw input into HTML
$ wikity version
Display the latest version of Wikity

Usage

Use Wikitext (file extension .wiki) to create your pages.

Any wiki templates (called using {{template name}}) must be inside the templates/ folder by default. Any files must be inside the images/ folder by default.

Wiki markup

Markup Preview
'''bold''' bold
''italic'' italic
'''''bold italic''''' bold italic
``code`` code
```code block```
code block
=heading= heading
==subheading== subheading
*bulleted
  • bulleted
**sub-bulleted
    • sub-bulleted
#numbered
  1. numbered
##sub-numbered
    1. sub-numbered
;term
term
:definition
 definition
<ref>Text</ref> [1]
<references/> 1. Text
[[internal link]] internal link
[[link|display text]] display text
[external-link] [1]
[external-link display text] display text
[[File:Example.png|Caption.]] Caption
{{tp name}} (contents of templates/tp_name.wiki)
{{tp name|arg=val}} (ditto but {{{arg}}} is set to 'val')
{{{arg}}} (value given by template)
{{{arg|default val}}} (ditto but 'default val' if unset)
{| style="margin:1em" table opening
! Cell heading Cell heading
|- class="new-row" new table row
| Cell content Cell content
|} table closing
{{#if:non-empty-string|text}} text
{{#ifeq:1|2|true|false}} false
{{#vardefine:varname|text}} (saved to memory)
{{#var:varname}} text (from memory)
{{#var:varname|default val}} (ditto but 'default val' if unset)
{{#switch:a|a=1|b=2|c=3}} 1
{{#time:dd/mm/yy|2021-03-28}} 28/03/21
{{#lc:TEXT}} text
{{#ucfirst:text}} Text
{{#len:12345}} 5
{{#sub:string|2|4}} ring
{{#pos:text|x}} 2
{{#padleft:text|5|_}} _text
{{#padright:msg|5|_}} msg__
{{#replace:Message|e|3}} M3ssag3
{{#explode:A-B-C-D|-|2}} C
{{#urlencode:t e x t}} t%20e%20x%20t
{{#urldecode:a%20b%27c}} a b'c
<noinclude>No</noinclude> (blank outside a template)
<onlyinclude>Yes</onlyinclude> Yes
<includeonly>Yes</includeonly> Yes (blank inside a template)
<nowiki>[[no link]]</nowiki> [[no link]]

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.3.0
    8
    • latest

Version History

Package Sidebar

Install

npm i wikity

Weekly Downloads

8

Version

1.3.0

License

ISC

Unpacked Size

36.6 kB

Total Files

13

Last publish

Collaborators

  • nixinova