Argon Documentation
website·Indexed 32 days ago
https://argon.wiki/docsArgon is a tool for Roblox development that enables the use of external editors, tools, and version control systems. It features a CLI and VS Code extension for project initialization, live syncing, and building. The platform supports various file types transformed into Roblox instances, provides Rojo compatibility, and includes support for TypeScript and automation.
What's inside Argon
- Argon is a tool designed for both professional users and beginners to manage small and large projects. It enables the integration of external editors, version control systems, and automated workflows into the development process.
Overview of Argon professional features
Argon is a tool built with Rust and MessagePack designed for Roblox development. It enables the use of external editors, tools, and version control systems. Key characteristics include:
- Modular Integration: Works with other Roblox tools such as Wally, StyLua, selene, and roblox-ts.
- Customization: Supports configuration via command flags, global config files, and project templates.
- Ease of Use: Provides a VS Code extension with a graphical interface for one-click setup.
- Safety: Major changes require user confirmation to prevent accidental data loss.
Migrate a Rojo project to Argon
Argon is compatible with Rojo projects. To migrate, move theplaceIdfield into theplaceIdsarray. The following field names are interchangeable between Rojo and Argon:serveAddress ==> host servePort ==> port servePlaceIds ==> placeIds globIgnorePaths ==> ignoreGlobs emitLegacyScripts ==> legacyScriptsConvert TOML files to ModuleScripts
Files with the.tomlextension are converted intoModuleScriptinstances returning a Luau table. TOML is recommended for human-readable configuration files. Note:DateTimevalues are converted to strings as Luau lacks a native representation for this type.string = "abc" bool = true array = [1, 2, 3] [object] int = 1337// Resulting ModuleScript Source:
return { ["string"] = "abc", ["bool"] = true, ["array"] = {1, 2, 3}, ["object"] = { ["int"] = 1337, } }Convert JSON files to ModuleScripts
Any file with the.jsonextension (that is not a.model.json,.project.json, or.meta.json) is converted into aModuleScript. The script returns a Luau table representing the JSON structure. This is recommended for storing bulk data like asset IDs.{ "string": "abc", "bool": true, "array": [1, 2, 3] }// Resulting ModuleScript Source:
return { ["string"] = "abc", ["bool"] = true, ["array"] = {1, 2, 3}, }Automate Argon builds and releases using GitHub Actions
Argon's CLI can be integrated into CI/CD pipelines for automated building and deployment. The following example demonstrates a GitHub Action workflow that triggers on a tag push to create a draft release, install dependencies via Wally, build the plugin usingargon build, and upload the resulting.rbxmfile to GitHub artifacts and the release.name: Build and Release on: push: tags: ["*"] jobs: # Create a draft release on GitHub draft-release: name: Draft Release runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create-release.outputs.upload_url }} release_id: ${{ steps.create-release.outputs.id }} steps: - uses: actions/checkout@v4 - name: Create Release id: create-release uses: shogo82148/actions-create-release@v1 with: release_name: ${{ github.ref_name }} draft: true # Build the plugin and upload it to GitHub build: name: Build runs-on: ubuntu-latest needs: draft-release steps: - uses: actions/checkout@v4 # Setup Aftman that installs Argon and Wally - name: Setup Aftman uses: ok-nick/setup-aftman # Install Wally dependencies that our plugin uses - name: Install dependencies run: wally install # Build the plugin - name: Build run: argon build -vvvv # Upload the plugin to GitHub artifacts - name: Upload to Artifacts uses: actions/upload-artifact@v4 with: name: plugin.rbxm path: plugin.rbxm # Upload the plugin to the draft release - name: Upload to Release uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.draft-release.outputs.upload_url }} asset_name: plugin.rbxm asset_path: plugin.rbxm # Publish the release publish-release: name: Publish Release runs-on: ubuntu-latest needs: [build, draft-release] steps: - uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: release_id: ${{ needs.draft-release.outputs.release_id }}Port an existing Roblox game to Argon
To port a Roblox game to Argon, follow these steps:
- Create an empty Argon project.
- Ensure your
*.project.jsonfile includes all services you intend to port. - Open the target place in Roblox Studio.
- In the Argon plugin settings, set the 'Initial Sync Priority' to
Client. - Start Live Sync in the Argon project.
- Connect the plugin to the active Argon session.
- If using the CLI, accept the incoming changes from Roblox Studio.
Create Roblox instances with children using folders
To create a Roblox instance that contains children, create a folder with the desired instance name and place an
initfile inside it. The suffix of theinitfile determines the type of the instance.Constraints:
- Only one
initfile and oneinit.metafile are permitted per folder. - Exceptions:
Projectfiles ignore immediate children, andData File(*.meta.json) is used specifically to describe an instance rather than acting as a container.
- Only one
Build projects into Roblox binary or XML files
Argon can export projects into Roblox binary formats (.rbxl,.rbxm) or XML formats (.rbxlx,.rbxmx). This is used for creating plugins/models, sharing projects, or publishing to Roblox. To perform a build, run theArgon Buildcommand via the CLI or VS Code.Update Argon CLI and Plugin
Argon generally updates automatically. The CLI checks for updates on every run, and the plugin updates automatically unless specific configuration settings (check_updatesorinstall_plugin) are disabled. Note that if Argon was installed via a toolchain manager (e.g., Aftman, Rokit) or Cargo, automatic updates are disabled and must be handled by that manager.argon updateConvert YAML files to ModuleScripts
Files with.yamlor.ymlextensions are converted intoModuleScriptinstances returning a Luau table. Warning: Mappings only support string, number, and boolean keys; other key types will be skipped.string: abc bool: true array: - 1 - 2// Resulting ModuleScript Source:
return { ["string"] = "abc", ["bool"] = true, ["array"] = {1, 2}, }Update Argon via VS Code Extension
The VS Code extension updates automatically by default. To trigger a manual update through the extension interface, use the Command Palette to access the Argon menu.- Press
Ctrl/⌘ + Shift + P. - Select
Argon: Open Menu. - Run the
Updatecommand.
- Press