Fabricate is a system-agnostic, flexible crafting module for FoundryVTT. You can read more about Fabricate, as well as learn how to use it, in the documentation.
Follow the official guide on Installing New modules.
The first method is to use the manifest URL from the top level module.json
file in the latest release when "Installing via Manifest URL".
Alternatively, a second approach is to download the module.zip
archive from the latest release when "Installing Modules Manually".
If you do download the bundle module.zip
manually, be mindful that the included manifest file DOES NOT contain valid download and manifest URLs.
If you want to install by manifest URL, use the first method.
Pre-releases can be installed using these same methods. However, the bundle and manifest URL are shared on Patreon.
Changes to Fabricate are documented on the releases themselves.
If you'd like to be involved I'd love to have some help! Take a look at the contributing guide and feel free to get in touch va Discord or email. I'm always happy to talk about how people can contribute.
Checkout the code on the main
branch (SSL: [email protected]:misterpotts/fabricate.git
) and install dependencies with:
npm install
Fabricate is built with Vite. Vite builds the Fabricate JS bundle at a fraction of the size that Webpack did, and in a fraction of the time.
Build output files are written to the /dist
directory in the project root.
You can build the module by executing the following script:
npm run build
Fabricate uses Jest for testing. You can execute the test suite with the following command.
npm test
Local installation is straightforward. Just run the following command.
npm run releaseLocal
Fabricate will test
, then build
and finally copy the build output from the /dist
directory to your local Foundry VTT Data directory.
There's no need to symlink directories.
This lets you use the development version of the Fabricate module straight away!
Just startup Foundry and enable Fabricate in module settings.
Fabricate installs the local build directly to your Foundry VTT Data Directory, under /modules/fabricate
.
The default Foundry VTT Data Directory is "../../dev-data/Data"
.
Fabricate assumes that you're doing local development with the following folder structure:
foundry-dev-root
- dev-data
- Data (your Foundry VTT Data Directory)
- modules
- fabricate
... other locally installed modules
- dev-modules
- fabricate
... other modules being developed
If you don't want to organise your projects how I do, you can set the FVTT_DEV_DATA
environment variable to override the relative Foundry VTT Data Directory location.
export FVTT_DEV_DATA="relative-path/from-the-build-directory/to-your-FVTT/Data"
Fabricate eschews the typical Foundry VTT module development approach of using Handlebars templates rendered in Foundry's UI. Instead, Fabricate uses Svelte to build its user interface components. Svelte is a component-based UI framework that compiles to vanilla JavaScript. It is more lightweight, faster and easier to use (in my humble opinion) than Handlebars and many other front end frameworks. Perhaps more importantly, using Vite and Svelte together means that Fabricate's UI is rebuilt and reloaded in the browser whenever you make changes to the source code during local development.
You can run a local Vite development server once you've performed a local installation of Fabricate
Vite will watch the build directory and rebuild the /dist
directory when some source files change.
The Vite dev server will also intercept requests to <LOCAL_FOUNDRY_HOST>/modules/fabricate/**
to serve these updated resources.
This enables live reload for CSS and Svelte components, which I find hugely boosts my productivity when working on Fabricate's UI.
To start the Vite dev server, run:
npm run serve
This will also open up a browser window at http://localhost:30001/game
.
Use this new browser window for local development.
DO NOT use your local Foundry client, or direct access (typically at port 30000
) to see the changes from live reloads (HMR) during local development.
This software is distributed with an MIT License.
Though it has changed significantly, this project was based on a FVTT Typescript Module Template. The template was provided by the League of Extraordinary Foundry Developers and is attributed to Spacemandev.
- "Alchemist's Supplies" belongs to /u/calculusChild and is bundled with Fabricate with their consent
Thanks are due to The League of Extraordinary Foundry Developers, in particular to their members valravn#7351
, ghost#2000
, BadIdeasBureau#7024
, Calego#0914
and Mana#4176
.
Join their Discord below.
theripper93 has my thanks for his help and sharing tidbits from his knowledge of FoundryVTT module development. Check out his collection of premium FoundryVTT modules if you haven't already.
Magus deserves a mention for their help in designing the new user experience for Fabricate and the many wireframes they produced!
I'd also like to thank the following Patrons for their ongoing support, both on the platform and on Discord:
- Relic
- Ichabod