The official Foundry VTT CLI
npm install -g @foundryvtt/foundryvtt-cli
fvtt --help
fvtt --version
fvtt configure
Determines if your configuration is correct and if not, prompts you to fix it.
fvtt configure view
View your current configuration.
fvtt configure set "key" "value"
Set a configuration value.
fvtt configure get "key"
Get a configuration value.
fvtt configure path
Outputs the path to your configuration file.
fvtt launch
Launches Foundry VTT. Available options are:
--demo
- Launches Foundry VTT in demo mode.--port 30000
- Launches Foundry VTT on a specific port.--world my-world
- Launches Foundry VTT straight into a specific world.--noupnp
- Disable UPnP port forwarding.--noupdate
- Disable automatic update checking.--adminKey "ABC123"
- The admin key to secure Foundry VTT's Setup screen with.
fvtt package
Output the current working package, if any.
fvtt package workon "1001-fish" --type "Module"
Swaps to working on a specific package, eliminating the need to pass --type
and --id
to other package commands.
fvtt package clear
Clears the current working package.
fvtt package unpack "compendiumName"
Reads a database from the current Package /packs/ directory and writes each document as a serialized Object to its own file.
There are a number of options available to customize the output, check out fvtt package unpack --help
for more information.
fvtt package pack "compendiumName"
Reads a directory of serialized Objects and writes them to a database in the current Package /packs/ directory. There are a number of options available to customize the operation, check out fvtt package pack --help
for more information.
fvtt configure
fvtt package workon "1001-fish"
fvtt package unpack "fish"
. . . // Make some updates to the files
fvtt package pack "fish"
git clone
cd foundryvtt-cli
npm install
npm run build
npm link
Certain internal functionality of the CLI is exposed as an API that can be imported into other projects.
import { compilePack, extractPack } from "@foundryvtt/foundryvtt-cli";
// Extract a NeDB compendium pack.
await extractpack("mymodule/packs/actors.db", "mymodule/packs/src/actors", { nedb: true });
// Compile a LevelDB compendium pack.
await compilePack("mymodule/packs/src/actors", "mymodule/packs/actors");
Compile source files into a compendium pack.
- src: string The directory containing the source files.
- dest: string The target compendium pack.
- options: object
- nedb: boolean = false Whether to operate on a NeDB database, otherwise a LevelDB database is assumed.
- yaml: boolean = false Whether the source files in YAML format, otherwise JSON is assumed.
- log: boolean = false Whether to log operation progress to the console.
- recursive: boolean = false Whether to recurse into child directories under src, otherwise only source files located directly under src will be used.
- transformEntry: (entry: object): Promise<false|void> A function that is called on every entry. Returning false indicates that the entry should be discarded.
Extract the contents of a compendium pack into individual source files for each primary Document.
- src: string The source compendium pack.
- dest: string The directory to write the extracted files into.
- options: object
- nedb: boolean = false Whether to operate on a NeDB database, otherwise a LevelDB database is assumed.
- yaml: boolean = false Whether the source files in YAML format, otherwise JSON is assumed.
- yamlOptions object = {} Options to pass to
yaml.dump
. - log: boolean = false Whether to log operation progress to the console.
- documentType: string For NeDB operations, a documentType must be provided. This should be the same as the pack's type field in the module.json or system.json.
- transformEntry: (entry: object): Promise<false|void> A function that is called on every entry. Returning false indicates that the entry should be discarded.
- transformName: (entry: object): Promise<string|void> A function that is called on every entry. The value returned from this will be used as the entry's filename. If nothing is returned, an auto-generated name will be used instead.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.