Compile pipeline
.clpp / .clp / .clh │ ▼ cluaupp build / watch │ JSON stdin ▼ clpp api compile │ CompileArtifact (luau + diagnostics) ▼ ClppLibs → ReplicatedStorage.CluauppLibs │ ▼ out/ → Rojo- Resolve
clpp.CLPPorCLPP_PATH, then the newest on PATH, then%LOCALAPPDATA%\Programs\CLPP\clpp.exe. Refuse anything older than 0.3.2. - Compile. One-shot
buildusesspawnSync.watchuses asyncspawnso the event loop is not blocked. Failures printdiagnostics[](1-based line/column). - Post-process.
require(ClppLibs.X)becomesrequire(ReplicatedStorage.CluauppLibs.X).--!strictfrom config /#pragma. - Write
out/. Filename tags pick Script / LocalScript / ModuleScript.void init()is called at the end of Scripts and LocalScripts. Watch does not overwriteout/while compile fails.
What Cluaupp owns vs CL++
Section titled “What Cluaupp owns vs CL++”CL++ (clpp) | Cluaupp |
|---|---|
| Syntax, types, OOP, Luau emit | Roblox API dump headers (include/clpp) |
clpp setup IntelliSense | Rojo project + cluaupp.config.json |
Language id clpp | init / build / watch |
CluauppLibs vendor copy into libs/ |
Config
Section titled “Config”See cluaupp.config.json. "architecture": true (ForeverHD folders) is not generated — one source file is still one .luau file.
src/ServerScriptService/Handlers/PlayerHandler.server.clpp → out/ServerScriptService/Handlers/PlayerHandler.server.luausrc/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.clpp → out/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.luausrc/ReplicatedStorage/Shared/Constants/Datas/TemplateData.clh → out/ReplicatedStorage/Shared/Constants/Datas/TemplateData.luauCLI reference: commands.