Installation¶
Wisp ships as plain Luau source in a single folder. There is nothing to compile and no dependencies to resolve — you either drop it directly into your folder or use a toolchain packager.
With Wally¶
Add Wisp to your wally.toml configuration file:
Run wally install, then ensure your default.project.json file maps your Packages folder so Rojo can sync it into your game layout:
{
"name": "my-game",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"$className": "ReplicatedStorage",
"Packages": {
"$path": "Packages"
}
}
}
}
Manual Installation (Rojo / Git Submodules)¶
Because Wisp has zero dependencies (well, technically only one: Luau itself), you can manually clone it straight into your repository workspace using Git:
Then map the path manually inside your syncing config tree:
{
"name": "my-game",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"$className": "ReplicatedStorage",
"Packages": {
"wisp": {
"$path": "Packages/wisp/src"
}
}
}
}
}
Direct Roblox Studio Install¶
If you are not using an external text editor toolchain or Rojo, you can install Wisp natively:
1. Grab the latest .rbxm from the releases page
2. Drag and drop the model file directly into your Roblox Studio Explorer panel view.
3. Place the wisp ModuleScript wherever you prefer (such as ReplicatedStorage).
local Wisp = require("../src")
Wisp.suite("works"):action("under the CLI", function()
Wisp.assume(true):isTrue()
end)
return Wisp()
Wisp itself is developed this way — see Contributing.
Luau must support backtick string interpolation
Wisp's source uses backtick string interpolation and utf8.char. Older or restricted Luau builds may not support these. If you are targeting an engine version where they are unavailable, transpile the source or use a recent Lune/luau CLI profile.
Verifying the install¶
Add a throwaway suite and run it. You should see a clean check mark and a zero-failure layout summary:
local Wisp = require("path/to/wisp")
Wisp.suite("Wisp:install")
:action("is working", function()
Wisp.assume(true):isTrue()
end)
Wisp()
Wisp:install
✓ is working
Suites: 1 passed out of 1 total
Tests: 1 passed out of 1 total
Took: 0.05ms
If you get attempt to index a nil value or require path must start with a valid prefix, your require path does not match where you placed the module directory.
Next¶
Write your first real test layout in Your First Test.