packwiz is an amazing tool that is akin to a package manager to Minecraft. This tool is VERY useful in building out Minecraft modpacks as it can pull from Modrinth, Curseforge, GitHub, and an Arbitrary URL if required.
packwiz defines everything in .toml (See TOML Homepage and TOML Wikipedia) files. This are really close to .ini files.
As everything is a TOML file this means that all this data can be checked into source control, like Git.
Packwiz lets you export your modpacks too. This will "build" and "compile" everything into two modpack formats (currently) a Forge format which is just a .zip file of everything and a Modrinth format (.mrpack) which is, mostly, just a zip file with metadata on how to get the files or it bundles files it can't download into the .mrpack
Separate out the client portion of your modpack from your server portion.
Source control + CI/CD pipelines.
With somethinng like packwiz you can get to a point where you check in your changes into Git, a Continuous Integration/Continuous Deployment pipeline can then pick up the changes, build a new user-artifact, push where required, and you might be able to use a webhook to force a restart of the server meaning updating the server is done automatically after pushing your changes (very useful).
packwiz init -- Initialize a new modpack
packwiz modrinth add <URL> -- Add a Modrinth mod to the modpack (also can be shorthaned to packwiz mr add <URL>
packwiz curseforge add <URL> -- Add a Curseforge mod to the modpack (also can be shorthanded to packwiz mr add <URL>)
packwiz pin <SLUG> -- Pin a mod to the current version to stop it from updating. <SLUG> usually is the part of the mod in the URL or if you're looking at the files it's the part of the file name mods/<SLUG>.pw.toml
packwiz refresh -- Make sure the index.toml file is up to date
packwiz modrinth export -- Export the pack to a Modrinth format file (can also use packwiz mr export)
packwiz curseforge export -- Export the pack to a Curseforge format file (can also use packwiz cf export)
Here's an example of the mod "Alex's Caves" from Modrinth that would be added to a modpack when running packwiz mr add alexs-caves or packwiz mr add https://modrinth.com/mod/alexs-caves
The file would go under mods/alexs-caves.pw.toml because it's a mod and alexs-caves is the slug of https://modrinth.com/mod/alexs-caves
The contents of that file looks like below. Note: this is not something you usually edit by hand.
name = "Alex's Caves"
filename = "alexscaves-2.0.2.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/U6GY0xp0/versions/lC8HHXOF/alexscaves-2.0.2.jar"
hash-format = "sha1"
hash = "a1e5c7b7c7eadda4c8e954acbcbaf75a7b500d53"
[update]
[update.modrinth]
mod-id = "U6GY0xp0"
version = "lC8HHXOF"