The data structure of a package manifest. This data structure is extended by BasePackage subclasses to add additional type-specific fields.

Example Manifest Definition

The following is an example of a fairly complex manifest with relationships, languages, and compatibility.

{
"id": "vue-encounter-builder",
"version": "1.0.0",
"compatibility": {
"minimum": "0.7.7",
"verified": "0.8.9",
"maximum": 9
},
"authors": [
{
"name": "Cody Swendrowski",
"url": "https://swendrowski.us",
"email": "cody@swendrowski.us",
"discord": "cswendrowski#9701"
}
],
"relationships": {
"systems": [
{
"id": "toolkit13",
"manifest": "https://github.com/Mageflame/Toolkit13/releases/download/latest/system.json",
"compatibility": {
"minimum": "1.11.0",
"verified": "1.14.0",
"maximum": "1.15.0"
}
}
],
"requires": [
{
"id": "dlopen",
"type": "module",
"manifest": "https://raw.githubusercontent.com/ForgeVTT/fvtt-module-dlopen/master/module.json",
"compatibility": {
"minimum": "1.2.0",
"verified": "1.4.0",
"maximum": "2.0.0"
}
},
{
"id": "vueport",
"type": "module",
"manifest": "https://raw.githubusercontent.com/ForgeVTT/fvtt-module-vueport/master/module.json"
}
]
},
"esmodules": [
"/scripts/dugeonmoon.js"
],
"styles": [
"/css/dugeonmoon.css"
],
"languages": [
{
"lang": "en",
"name": "English",
"path": "languages/en.json",
"title": "🌑 Dungeon Moon Encounter Builder",
"description": "A fair encounter builder for Foundry"
}
],
"url": "https://github.com/cswendrowski/FoundryVTT-Encounter-Builder",
"update": "https://github.com/cswendrowski/FoundryVTT-Encounter-Builder/releases/latest/module.json",
"download": "https://github.com/cswendrowski/FoundryVTT-Encounter-Builder/releases/download/1.0.0/module.zip"
}
interface PackageManifestData {
    id: string;
    title: string;
    description: string;
    authors: PackageAuthorData[];
    url: string;
    license: string;
    readme: string;
    bugs: string;
    changelog: string;
    version: string;
    compatibility: PackageCompatibility;
    scripts: string[];
    esmodules: string[];
    styles: string[];
    languages: PackageLanguageData[];
    packs: PackageCompendiumData[];
    relationships: PackageRelationships;
    socket: boolean;
    manifest: string;
    download: string;
    protected: boolean;
}

Properties

id: string

The machine-readable unique package id, should be lower-case with no spaces or special characters

title: string

The human-readable package title, containing spaces and special characters

description: string

An optional package description, may contain HTML

An array of author objects who are co-authors of this package. Preferred to the singular author field.

url: string

A web url where more details about the package may be found

license: string

A web url or relative file path where license details may be found

readme: string

A web url or relative file path where readme instructions may be found

bugs: string

A web url where bug reports may be submitted and tracked

changelog: string

A web url where notes detailing package updates are available

version: string

The current package version

compatibility: PackageCompatibility

The compatibility of this version with the core Foundry software

scripts: string[]

An array of urls or relative file paths for JavaScript files which should be included

esmodules: string[]

An array of urls or relative file paths for ESModule files which should be included

styles: string[]

An array of urls or relative file paths for CSS stylesheet files which should be included

languages: PackageLanguageData[]

An array of language data objects which are included by this package

An array of compendium packs which are included by this package

relationships: PackageRelationships

An organized object of relationships to other Packages

socket: boolean

Whether to require a package-specific socket namespace for this package

manifest: string

A publicly accessible web URL which provides the latest available package manifest file. Required in order to support module updates.

download: string

A publicly accessible web URL where the source files for this package may be downloaded. Required in order to support module installation.

protected: boolean

Whether this package uses the protected content access system.