Packaging extensions for Vortex
This article is for those who have created an extension (or a translation or theme) for Vortex and want to upload it for others to enjoy.
The easiest way for users to find and install extensions is through the built-in dialog. For your extension to be listed there a couple of things have to be fulfilled:
- it has to be packaged in the correct way (see below)
- it has to be uploaded to https://www.nexusmods.com/site
- it has to be added to the correct category
- it has to be manually reviewed by us
This last step means that after uploading your extension it may still take some time before it will be offered within Vortex.
Translations need to be packaged such that on the top level you have a directory with the two letter iso code for the language, optionally postfixed with the two letter country code. Directly inside that directory you include the translation files in json format.
You can have additional files like readmes and license files in the base directory but Vortex will ignore anything except the directory with the iso code
So for german it coud look like this:
/ |--> readme.txt |--> de |--> common.json
For swiss german it would be
/ |--> readme.txt |--> de-CH |--> common.json
The code will determine the language name as the user selects it and will also control things like date and number formats and lexical ordering.
Fun fact: The swedish alphabet contains the same umlauts ä and ö also found in the german one but while the german umlauts are sorted as if they were ae, oe and ue, the swedish ä and ö are at the end of the alphabet. Stuff like this makes it impossible to define a universal order for all known letters. Bet you didn't know that. Bet you didn't care to.
Themes should contain a single subdirectory containing your scss files. The name of that directory will be used in the dropdown where users choose the theme.
Here too you're welcome to include further files but Vortex will ignore everything apart from the scss in that one subdirectory.
/ |--> readme.txt |--> My Fancy Theme |--> variables.scss |--> style.scss
Extensions (including game extensions) need to contain at least an index.js and an info.json file. Both need to be placed on the top-level of the archive. If you include further assets or libraries (libraries that aren't baked/webpacked into the index.js) you are free to arrange them into subdirectories of course.
/ |--> readme.txt |--> index.js |--> info.json |--> assets |--> fancy.jpg |--> icon.svg
On the topic of the info.json file: Please make sure you specify the exact same version number during upload that you have set in info.json and that the version is in semantic versioning format.
Also: Please try to avoid changing the name of an extension (inside the info.json file) as much as possible, definitively don't put the version number into the extension name.