Skip to main content

Configuration

moonwave.toml#

You can customize how Moonwave behaves by creating a moonwave.toml file in the root of your project.

Here's a sample moonwave.toml with default properties. Every property listed here is optional.

tip

Options annotated with the comment # From Git mean that property is automatically filled in from your Git repository.

title = "MyProjectName"  # From GitgitRepoUrl = "https://github.com/evaera/moonwave" # From Git
gitSourceBranch = "master"changelog = trueclassOrder = []
[docusaurus]onBrokenLinks = "throw"onBrokenMarkdownLinks = "warn"favicon = ""
# From git:organizationName = "AuthorName"projectName = "MyProjectName"url = "https://AuthorName.github.io"baseUrl = "/MyProjectName"tagline = "Your project's tagline"
[navbar]hideableSidebar = true
[footer]style = "dark"copyright = "Copyright © 2021 AuthorName. Built with Moonwave and Docusaurus"
[[footer.links]]title = "examples"
[[footer.links.items]]label = "example"href = "https://example.com/"

See the publishing guide for details on the url and baseUrl options.

Docusaurus options#

The options in the [docusaurus] section are directly passed to the Docusaurus options. For more information, please see the Docusaurus docs

Custom navbar options#

You can add custom navbar options like so:

[[navbar.items]]href = "https://discord.gg/abcdefghijk"label = "Discord"position = "right"
[[navbar.items]]href = "https://???"label = "Something Else"

API Class Order#

You can customize the order that classes appear in the API section with the classOrder option. In moonwave.toml, specify:

classOrder = [    "MyClass",    "Sample"]

Any classes not listed here will be alphabetized and added to the end of the list. Listing a class that doesn't exist is an error.

Sections#

You can categorize your API pages with sections. Instead of the above style, you can do this:

[[classOrder]]section = "Section name"classes = ["Class1", "Class2"]
[[classOrder]]section = "Another section name"classes = ["Class3", "Class4"]
[[classOrder]]# No section name will link classes at the root level of the sidebarclasses = ["Class5", "Class6"]
[[classOrder]]section = "Yet another section name"collapsed = false # Determines with the section grouping is collapsed or expanded on page load. Defaults to true.classes = ["Class7", "ClassAte", "Class9"]

Automatic Sections from Folders#

You can use the autoSectionPath option to automatically categorize classes into sections based on the folder they are inside in your project.

autoSectionPath = "packages"

With this option set, folders inside YOUR_REPO/packages will be automatically used as section names. Folders may be kebab-case, PascalCase, camelCase, or sentence case: they are automatically converted to Title Case in the section name.

For example, a class defined in YOUR_REPO/packages/thing-doer/init.lua will automatically be placed in a section called Thing Doer.

Table of Contents (TOC)#

You can customize categories in the Table of Contents of each API page. To create a category, first tag all items that should be included in the category with the @tag tag.

--[=[    This is a very fancy function that adds a couple numbers.
    @param a number -- The first number you want to add    @param b number -- The second number you wanna add    @return number -- Returns the sum of `a` and `b`    @tag utility]=]function MyFirstClass:taggedFunction(a, b)    return a + bend

Then, specify those tags under the apiCategories option in your moonwave.toml file.

apiCategories = [    "constructor",    "utility",    "random"]

Custom home page#

By default your project's README is used as the homepage. To use a custom homepage, simply set enabled to true in the [home] section:

[home]enabled = trueincludeReadme = true # Optional
[[home.features]]title = "Feature 1"description = "This is a feature"image = "https://url
[[home.features]]title = "Feature 2"description = "This is a second feature"image = "https://url

Optionally, you can include includeReadme = true, which will append your project's README to the end of the home page.

If your project's README begins with some content that you don't want included in your home page, you can place an HTML comment in your project's README that will not include any content before it.

Project Logo, Project Name, Etc<!--moonwave-hide-before-this-line-->My project is amazing and it does everything you could ever want.

Only the content underneath the HTML comment will be included in your Moonwave homepage.