Experimental
Aims to be a utility tool for quickly publishing changes to packages on Roblox relevant to a given directory of files and associated package file
Whether or not debug logs in the terminal will be printed
Used specifically for debugging unresolved references in a package, where by running the info command on a package will allow you to see the list for any unresolved references.
The path to the folder where packages will be created/serialised into
If Repackage should stall the program whilst a package is publishing to ensure the operation was successful
Whether non-script instances, such as Models or Parts, should be serialised as Repackage Meta files.
- If
true: then they will be serialised asRepackage.meta.json. - If
false: then they will be serialised asRoblox.rbxmx.
-
- The environment variable name for the Roblox API key
-
- The file path for the file containing just the Roblox API key
-
- The directory path used in tandem with
secretsFilefor the Roblox API key
- The directory path used in tandem with
-
- Decides which method to use for finding and using the API Key
- If
file, then will usesecretsDirectoryandsecretsFileto find it - If
env, then will usesecretsEnvKeyto find it
- If
- Decides which method to use for finding and using the API Key
Warning
Using Rojo sync will (more often than not), incorrectly sync over meta properties for instances. Due to it's inconsistencies there may be bugs when using Rojo w/ Repackage.
Repackage isn't technically designed to work 100% with Rojo, however you can still use it if you wish.
Here are my recommendations:
{
// ...
"outputDirectory": "Packages/" // locally store all your packages in this single place
// ...
}So that when you work with rojo, you can do something like this when handling packages in Rojo where:
- Each package is given it's own file in the workspace correlating to where it should be
- The sourcemap can generate accurate mappings to your packages
- You can add other files seperately in your "src/" directory or wherever else you may have it
{
// ...
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$className": "Folder",
"Modules": {
"$path": "Packages/SharedModules.Package/SharedModules" // directly reference the package folder correlating to where it's used
},
"$path": "src/shared" // include other shared files
},
},
"ServerScriptService": {
"Server": {
"$className": "Folder",
"Services": {
"$path": "Packages/ServerServices.Package/ServerServices"
},
"Modules": {
"$path": "Packages/ServerModules.Package/ServerModules"
},
"$path": "src/server" // include other server files
}
}
// ...
}
}-
Generate package map for a given package (asset)
- generate from specific revision
- embed revision ID into package
- generate from specific revision
-
Generate a matching map for a given directory
-
Compare mappings for changes
-
Publishing to package
- All
- Specified
- Package revision notes
- I dont think this can be set via the API, might also be client only but i have no idea
- Update local package meta on update
- Check if newer version exists; stash changes in some way
- Repackage temp folder config
-
Reverting
- requires mapping comparison
-
Sub packages (packages within packages)
- Add warning when publishing about unresolved Refs if any
- Add warning when creating/publishing about sub-packages (unsupported)
Can handle most datatypes and objects, although I dont recommend storing your assets and code in the same package, as it makes the file structure messy. I personally mainly use seperate Packages for Code and actual Instances.
Requires a specific structure for packages;
-
The package's "main" instance must be a Folder or Folder-like (the instance with the PackageLink inside)
-
Cannot handle packages within packages currently
-
Cannot handle instance Refs that are outside of the package; will throw a warning if it fails to find one
- as such, packages that contain references to things outside of the package should not be used.
- furthermore, the
infocommand will kindly print out every time it fails to find a reference if thedebugUnresolvedRefsconfig option istrue
- Internal returned values are all over the place (my bad..)
- No user-facing access to downloading specific versions of packages
{ "debugLogs": false, // true / false "debugUnresolvedRefs": false, // true / false "outputDirectory": "output/", // a folder "publishedAwaitOperation": true, // true / false "serialiseNonScripts": false, // true / false "secrets": { "secretsEnvKey": "ROBLOX_API_KEY", // a environment variable "secretsFile": "api_key.txt", // a filename "secretsDirectory": "secrets/", // a folder "secretsType": "file" // either "file" or "env" } }