@ghost-fvtt/foundry-factory
v1.4.3
Published
An interactive command line tool to bootstrap modules and systems for Foundry Virtual Tabletop
Downloads
132
Maintainers
Readme
Foundry Factory
Foundry Factory is an interactive CLI tool that developers can use to bootstrap modules and systems for Foundry Virtual Tabletop. It allows developers to choose among different presets to initialize their projects.
It is designed to be extendable so that adding additional presets is quite easy.
Usage
In order to Foundry Factory, a recent version of Node.js 14 or higher is required. You can run it with npx
:
npx @ghost-fvtt/foundry-factory <project-directory>
Alternatively you can install it globally and then execute it:
npm install -g @ghost-fvtt/foundry-factory
foundry-factory <project-directory>
Command Line Options
Usage: foundry-factory [options] <project-directory>
Options:
-v, --version Show the version number of Foundry Factory
-t, --type <type> Create a project of this type (choices: "module", "system")
-p, --preset <preset> Use this preset (choices: "ghost-gulp-rollup", "league-js")
-d, --default Use the default preset (default: false)
-n, --no-config Skip the configuration prompts of the selected preset and use its default configuration
-f, --force Overwrite target directory if it exists (default: false)
--no-deps Skip installing project dependencies
--no-git Skip git initialization
-m, --packageManager <packageManager> Use the specified npm client when installing dependencies (choices: "npm", "yarn", "yarn2", default: "npm")
-h, --help display help for command
Presets
Here is a list of available presets with links to their individual documentation:
Development
Prerequisites
In order to build this project, recent versions of node
and npm
are
required. Most likely using yarn
also works but only npm
is officially
supported. We recommend using the latest lts version of node
. If you use nvm
or fnm
to manage your node
versions, you can simply run
nvm install
or
fnm install
in the project's root directory.
You also need to install the project's dependencies. To do so, run
npm install
Building
You can build the project by running
npm run build
Alternatively, you can run
npm run build:watch
to watch for changes and automatically build as necessary.
Running the tests
You can run the tests with the following command:
npm test
Contributing
Contributions via pull requests are very welcome. If you find any issues, please report them in the issue tracker.
Creating new presets
Foundry Factory is designed to be easily extendable, so adding new presets should be pretty straight forward. In order to create a new preset, there are a couple of things you need to do:
- Add a new folder for your preset in the
src/presets
directory. - In that folder, create a class which implements the
Preset
interface and has the methods of thePresetConstructor
interface as static methods.- The
getProgrammaticFiles
method returns a mapping between files to create and the contents (asstring
) to write them. - The
getTemplateFiles
method returns a mapping between files to create and Nunjucks template files used to render them. - The
getTemplateVariables
returns a record of additional template variables to pass to the Nunjucks templates. - The
getAdditionalDirectories
returns a list of additional directories to create. - The
getDependencies
method returns a list of dependencies to install. - The
getDevDependencies
method returns a list of development dependencies to install. - The
getPostInstallationCommands
method returns a list of shell commands to run after the rest of the installation has completed. Make sure that they work on both Unix-like systems and Windows.
- The
- If your preset does not need some of these features, simply omit the corresponding methods. Except for the static methods, all of them are optional.
- Add your preset to the
presets
constant insrc/presets/presets.ts
. - Optionally, create a folder for your preset in the
template
directory, containing any Nunjucks templates you want to render. In order to render them, you need to return paths to them (relative to thetemplate
directory) from thegetTemplateFiles
method of your class.
Licensing
This project uses REUSE to specify the used licenses. Currently, everything is licensed under the MIT license. More information (including the copyright holders) can be found in the individual files.
Acknowledgment
While this is not a fork of Foundry Project Creator, a lot of inspiration was taken from it. You could think of it more as a rewrite with a couple of different design goals.
Credit for the name "Foundry Factory" goes to BadIdeasBureau.