I have no idea why this doesn’t wanna work as it should, but it’s pretty annoying
Personally, I don’t care for the individual paths. I only want a tool that automatically makes paths to the folders, so that I don’t have to write it myself.
The only thing I recall changing in the .rogen.json file that was generated by using rogen --init is “Packages” → “packages” (not the path)
I just upgraded to Rojo 7.7.0, and I’m now seeing the same issue. For now, either stick with an older Rojo version (Rojo 7.6.1 works great), or don’t use Rogen for this moment. I’ll let the Rojo maintainers know about this issue, and hopefully this can be fixed soon in 7.7.1. One of Rojo’s main maintainers actually uses Rogen, so it’ll probably be fixed soon-ish I hope.
However, the “tree” field in Argon’s default.project.json looks to be exactly the same as Rojo, so Rogen seems compatible with Argon at first glance. You do have to add Argon specific fields to the template, of course.
One thing I don’t know for sure is whether Argon can handle dynamic changes in its default.project.json. I think it probably works the same as Rojo.
You should give it a shot! Let me know if it works!
EDIT: I think you may encounter problems (but I’m not 100% sure) when trying to sync non-lua format files like .csv, .txt, .json, or .toml. If Rogen is compatible with Argon except for those formats, I could release an update later this week to fix that for you.
I have managed to make it work! the only workflow that I need to check is /client folder in studio are parented on StarterPlayer/StarterPlayerScripts. I saw an override option. Not sure how to use it though. I wanted the client folder to be parented on replicated storage aswell. to fit with my workflow.
edit:
This would not be an issue for me as I don’t sync any of this to studio. I’m basically what rojo calls Partially managed rojo. Argon lets me place/create scripts in-studio or in project directory. Unlike in rojo it has to be created in the directory; Creating script/module inside studio doesn’t sync back to the file system unless im missing something. Although when using rogen I lose that feature anyway but its a good tradeoff.
You probably want to set "emitLegacyScripts": false in the template field. If you do this, all client scripts will be routed to ReplicatedStorage automatically. I should probably document this behavior (I’m planning to improve the docs soon).
If you want to add new routing keywords or override the default ones, you can use the aliases field. For example, you can override it like this (note that local scripts can’t run when emitLegacyScripts is not set to false):
"aliases": {
"client": "ReplicatedStorage"
}
You can also add custom routing keywords like this:
Does this mean the folder with the initialization file is supposed to be routed? I noticed you mentioned it should still be routed:
Yet, when I tried it out, the folder doesn’t seem to be routing properly. I’ve set the alias “Provider” to ServerScriptService, although it doesn’t seem to be working whenever I use it on a folder with an initialization file.
In Studio, the rootProvider still ends up under ReplicatedStorage despite having the routing keyword. I’m trying to figure out if this is a bug or if rogen simply doesn’t support routing to the folder with the init file itself.
Folders don’t support routing affixes; It would work if you named the folder “Provider” instead. Alternatively, you could place a .Provider or a .server inside of the “rootProvider” folder.
I should probably clarify this a bit better. There’ll be a new update with much improved docs coming very soon.
Thank you for the explanation, I’ve got it to work. From now on, I’ll just add a .server file to route init claimed folders. That seems to be the cleanest solution.
Introducing a new Documentation Website, major stability fixes for Rojo, and a powerful tag system.
Breaking Changes
Configuration: Configured paths now resolve relative to the .rogen.json file, not your current terminal folder. You can now run Rogen from any directory, which makes managing multi-place projects much easier. (Paths passed via CLI flags still use your terminal folder.)
Configuration: The .rogen.json file now uses project instead of template to define the base tree.
Configuration: The verbatim boolean replaces the old keepRouteNames setting.
CLI: The -t flag now activates tags. It no longer sets the template.
CLI: The -p or --project flag overrides the project file. This replaces the old -t template flag.
Highlights
Rojo Stability: Improved the generated Rojo structure. This fix significantly reduces Rojo crashes when deleting files or folders.
Tag System: Rogen now supports build-time dependency injection. You can filter test files and mock data from production builds. Define tags in your config, then apply them to files or folders. Rogen removes files with inactive tags from the build entirely.
Data Files: Rogen now properly handles data files like .json and .yml.
New Config Options: Use unwrap to remove global wrapper folders, and use globIgnorePaths to ignore exact file patterns. Use casing to set folder formatting to "camelCase" or "PascalCase" (contribution by bo-rges).
Invisible Folders: Wrap a folder name in parentheses, like (inventory). Rogen keeps the files together on your machine but removes the folder from Roblox Studio
Package Manager Support
You can now install Rogen with npm using npm i @ldgerrits/rogen
This patch fixes a folder collapsing edge-case and stops raw data files from preventing rebuilds.
Fixes and Improvements
Folder Collapsing: Fixed an issue where folder collapsing overwrote a parent node’s own $path. Rogen now skips folder collapsing on nodes with an existing $path.
Data File Handling: Rogen no longer stops building project.json when it finds an unmapped raw data file. Rogen now removes these files from the tree, finishes the build, and warns you to use globIgnorePaths or to wrap them in a folder.
This patch brings major stability fixes for Rojo and Windows users, and smarter project file generation.
Major Upgrades
Rojo Stability & Live Deletions: Deleting a file or folder during rojo serve no longer has any possibility of crashing Rojo. Rogen now builds entries using Rojo’s optional path format ({ "optional": path }).
Windows “Folder in Use” Fix: Watching now polls for changes (only on Windows). Polling stops editors like VSCode from showing “folder in use” prompts.
Stale Instance Cleanup: Generated folders set $ignoreUnknownInstances: false by default.
Atomic Writes: Rogen writes the project file atomically to prevent watchers from reading a half-written file.
Bug Fixes
TypeScript Definitions: Fixed a bug where Rogen failed to ignore *.d.ts files due to a bug introduced in v1.4.0.
Glob Ignore Paths: Improved the project tree structure when you use globIgnorePaths.
Service Containers: Fixed a desyncing issue for undefined service containers.
Luau Project Deletions: Fixed a bug where the watcher fired mid-deletion and tried to rebuild deleted paths as empty stubs. Rogen now creates placeholder stubs only for compiled projects (TypeScript or Darklua). In Luau projects, Rogen simply drops the old node.
Additions
Initial Run Log: Added a log message for the first run even if there were no changes for improved feedback.
This patch fixes a bug where folders with semantic version names were incorrectly removed during build.
Fixes and Improvements
Data File Classification: Fixed an issue where folders with semantic version names (e.g., sleitnick_signal@2.0.3) were incorrectly detected as data files. Rogen now uses a whitelist of supported data extensions (those supported by Rojo and Argon) to prevent this from happening.
This patch fixes a regression introduced in 1.4.2.
Fixes
StarterCharacterScripts and StarterPlayerScripts aliases: Fixed an issue where adding custom aliases for nested services (StarterCharacterScripts or StarterPlayerScripts) did not generate the correct nodes in the project file.
Rojo just released a patch (v7.7.1) which fixed a myriad of problems related to paths on Windows. It now works perfectly with Rogen again! I recommend upgrading Rojo from 7.6.1 to 7.7.1 if you haven’t already.