Build-time module contract verification for Gleam — enforce that paired modules stay in sync.
gleam add module_contractsCreate a contract check entrypoint in your package:
import module_contracts
import module_contracts/rule
pub fn main() {
module_contracts.check(
interface_path: "build/dev/docs/my_package/package-interface.json",
rules: [
module_contracts.mirror_rule(
source: "my_package/headless/button",
target: "my_package/button",
prefix_params: [rule.Labeled(label: "context")],
)
|> module_contracts.with_exceptions(exceptions: ["button"]),
module_contracts.shared_types(
module_a: "my_package/headless/button",
module_b: "my_package/button",
type_names: ["ButtonConfig"],
),
],
)
}Then run it in your build chain:
gleam export package-interface --out build/dev/docs/my_package/package-interface.json
gleam run -m contract_testSee SPEC.md for the full technical specification.