Getting started
From a clone to an addon running in the game, in about ten minutes.
What you need
- Node.js 24 or newer: the build scripts are TypeScript that Node runs directly.
- pnpm:
npm install -g pnpm. The version is pinned in thepackageManagerfield ofpackage.json. - LuaJIT (or another Lua 5.1) on your
PATH, only to run the tests. - World of Warcraft: Forever (1.60.x), only to see an addon run.
Get the code and build it
git clone https://github.com/vattiss/wowkit.git
cd wowkit
pnpm install
pnpm buildpnpm build compiles every addon with TypeScriptToLua. Each addon becomes one folder in its own dist/:
addons/glowing-bars/dist/GlowingBars/
GlowingBars.toc the addon's description for the game
GlowingBars.lua all of the addon (and the packages it uses) in one Lua file
images/logo.tga the icon, made from assets/logo.pngRun it in the game
Tell the deploy script where the game's AddOns folder is, then deploy one addon:
export WOW_ADDONS_DIR="C:/Program Files (x86)/World of Warcraft/_classic_beta_/Interface/AddOns"
pnpm --filter glowing-bars deploy:game$env:WOW_ADDONS_DIR = "C:\Program Files (x86)\World of Warcraft\_classic_beta_\Interface\AddOns"
pnpm --filter glowing-bars deploy:gameType /reload in the game to load the new build. The Forever beta installs into _classic_beta_; the folder you need is the one that holds your other addons.
Check your work
pnpm check # the rule checks, ESLint and Prettier
pnpm test # the checks, the build, and the specs of every addon and package
pnpm format # let Prettier lay the code outpnpm check is not only style. It enforces the shape of the code: who may call the game, who may import whom, that every service is wired in addon.ts, that function names start with a verb, and that the spell and item IDs in the code are the ones the client knows. The reasons are in Architecture.
Find your way around
| You want to | Go to |
|---|---|
| Understand how the code is split | Packages and addons and Architecture |
| Know what a word means (buff, aura, buff category...) | Glossary |
| Know why the code is so careful with the game | The game's quirks |
| Look up a class or a function of the toolkit | API reference |
| Write an addon of your own | Learning guide |
| Release an addon | Releasing |
The addon of this repository is Glowing Bars. The smallest real addon the repository had, a notice and a Settings page in a few hundred lines, is Rank Reminder, at its last tag: the template for a new one.