#factorio #package

app pactorio

Mod packager for Factorio

17 releases

0.6.0 Oct 1, 2022
0.5.2 Nov 10, 2021
0.5.1 Feb 25, 2021
0.5.0 Nov 19, 2020

#9 in Games

36 downloads per month

MPL-2.0 license

450 lines


release version deps license ci

Mod packager for Factorio



The latest precompiled binaries are available on github.

Alternatively you can install pactorio from crates.io with cargo.

cargo install pactorio

Building from source

cargo build --release


pactorio [FLAGS] [OPTIONS]
option description
-c, --compact Output info.json compactly
-z, --zip Output a zip file instead
--compression <method> Specify the compression method, ignored without the -z/--zip flag
default: stored
possible values: stored, bzip2, deflate, zstd
-d, --dir <directory> Set working directory
-i, --input <file> Specify the config file to use
default: pactorio.toml
-o, --output <directory> Specify the output directory
default: release
-u, --upload [<api-key>] Upload to mod portal
Requires an API key, which can be created on https://factorio.com/profile
-h, --help Prints help information (use -h for a summary)
-V, --version Prints version information


By default, pactorio uses pactorio.toml as its config file.

It is similar to the info.json file and uses TOML syntax.

Here is an example of a pactorio config file.

# Information about your package, similar to info.json
# https://wiki.factorio.com/Tutorial:Mod_structure#info.json

# Mandatory, internal name of your mod
name = "example_mod"

# Mandatory, version of your mod, "main.major.minor"
version = "0.1.0"

# Mandatory, display name of your mod
title = "Example mod"

# Mandatory, author of your mod, You
author = "You"

# Optional, for example your email address
contact = "you@example.com"

# Optional, link to the homepage of your mod
homepage = "https://you.example.com"

# Optional, short description of your mod
description = "Example mod. Does something and some other things. "

# Optional, default: "0.12", usually needs to be added
factorio_version = "1.0"

# Dependencies are separated into four parts, All four of them are optional
# They are under a table named "deps", you can also use "dependencies"

# Required dependencies

# Same as "base >= 1.0" in info.json
base = ">= 1.0"

# Conflict or incompatible dependencies
[deps.conflict] # or [deps.incompatible]

# Same as "! bad_mod" in info.json
bad_mod = ""

# Same as "! incomp < 3" in info.json
incomp = "< 3"

# Optional dependencies

# Same as "opt_dep = 0.2.1" in info.json
opt_dep = "= 0.2.1"

# Hidden optional dependencies

# Same as "hidden_dep > 2.0" in info.json
hidden_dep = "> 2.0"

# Optional, source directory

# Pactorio will use all the files under this directory
# Optional, default: "src"
dir = "src"

# A list of glob patterns to represent the files to include
# Relative to your source directory
# Optional, default: ["**/**"]
include = ["**/**"]

# A list of glob patterns to represent the files to ignore
# Relative to your source directory
# Optional, default: []
ignore = []




~374K SLoC