Rojo Compatibility
Azul features a Rojo Compatibility Mode that allows you to build or push Rojo-style projects into Roblox Studio.
When this article refers to “Rojo-style” projects, it means that the project is structured similarly to Rojo and its project format. In practice, this means the feature will also work with tools like Argon. Note that full support for these tools is not guaranteed.
azul build --rojoazul build --rojo --rojo-project default.project.jsonazul push -s Packages -d ReplicatedStorage.Packages --rojoIn this mode, Azul will try to do the following:
- Read the
default.project.json(or the provided project file) to interpret Rojo-style structure. - If no
default.project.jsonis provided, or none is found, Azul will attempt to interpret the Rojo-style structure and push it into Studio.
Generating a Rojo project
Section titled “Generating a Rojo project”azul pack can also write a Rojo project file from the packed sourcemap, so your project can be used with Rojo-based tooling:
azul pack --rojoazul pack --rojo-output my-library.project.jsonc- By default, the project is written to
default.project.jsonc. Use--rojo-outputto pick another path (it must end in.project.jsonor.project.jsonc). - If you’re packing a package, the project is rooted at its
packageRoot. Otherwise, it describes the whole place. - References between instances (e.g. a
Weld’sPart0) are kept using Rojo’s$id&Rojo_Target_*attributes. - Azul asks before overwriting a project file it didn’t generate.
Supported Rojo features
Section titled “Supported Rojo features”This is a comprehensive list of Rojo features supported in the Rojo Compatibility Mode, with the following classification:
- ✅ - The feature is fully supported and works as expected
- ❌ - The feature is not available because it does not makes sense to include it
- 🔜 - The feature is not available but it’d be nice to include it at some point
- 🤷♀️ - The feature is not available yet; open to discussion about implementing this
| Feature | Status | Notes |
|---|---|---|
Scripts & folders (init.luau, *.luau, *.server.luau, *.client.luau) | ✅ | |
Rojo Project Files (*.project.json, *.project.jsonc) | ✅ | Nested project files are also supported. |
JSON Models (*.model.json) | ✅ | |
XML or binary Models (*.rbxm, *.rbxmx) | ❌ | Azul does not yet support reading or writing rbxm/rbxmx files. When (or if) this is implemented for mainline Azul, this feature will be heavily considered. |
Meta Files (*.meta.json) | 🤷♀️ | While supporting meta files is possible, I have not seen them used very often. A solid, real-world use case would be needed for it to be considered. |
JSON Modules (*.json) | ✅ | |
Plain text files (*.txt) | 🤷♀️ | I have seen very few projects make use of the *.txt, *.csv or *.toml files. |
Localization Tables (*.csv) | 🤷♀️ | |
TOML Modules (*.toml) | 🤷♀️ |