Weld manifests are plain Elixir keyword lists.
Top-Level Keys
workspace
rootPath from the manifest file to the repo root.project_globsOptional authoritative project globs. If omitted,weldwill tryblitz_workspaceand then filesystem fallback.
classify
toolingproofsignored
Each value is a list of project ids.
publication
internal_onlyseparateoptional
optional is a keyword list mapping feature ids to project-id lists.
dependencies
Manifest-owned canonical external dependency declarations.
Use this when a selected project depends on an external package through local
workspace transport such as :path, :git, or :github, but the welded
artifact must publish a canonical dependency instead.
Each key is the dependency app name. Each value contains:
requirement— version requirement string. Optional whenoptsincludes:gitor:github.opts— additional Mix dependency opts.:pathis rejected.:gitand:githubare permitted.
weld raises if neither a requirement nor a git/github opt is present.
artifacts
One manifest can define more than one publishable artifact. Each artifact entry contains:
mode—:package_projection(default) or:monolith. The alias:componentsis accepted as a synonym for:package_projection.monolith_opts— keyword list of monolith-specific options (see below). Ignored in package-projection mode.rootsincludeoptional_featurespackageoutputverify
Monolith Options (monolith_opts)
shared_test_configs— list of project ids (atoms or strings) whoseconfig/test.exsfiles are imported into the generated rootconfig/test.exs. Other packages' test configs are omitted and a warning is emitted for each.extra_test_deps— list of app name atoms referencing manifest-declared dependencies that should be forced into test-only deps in the generatedmix.exs, even if they would not otherwise appear in the test closure.test_support_projects— list of non-selected project ids (atoms or strings) that are allowed to appear in the monolith:testview. When present,weldfails closed if the discovered non-selected test support set does not match the manifest.
Package Keys
nameotp_appversionelixirdescriptionlicensesmaintainerslinksdocs_main
Output Keys
dist_rootdocsassets
Verify Keys
artifact_testshex_buildhex_publishsmoke.enabledsmoke.entry_file
Smoke verification is not run in monolith mode.
Set hex_build: false for internal artifacts that intentionally depend on
non-Hex git dependencies. Set hex_publish: false when package-projection
verification should skip mix hex.publish --dry-run --yes.
hex_build: false does not disable weld.release.prepare,
weld.release.track, or weld.release.archive. It only omits the tarball from
the prepared bundle.
Example — Package Projection
[
workspace: [
root: "../..",
project_globs: ["apps/*", "core/*", "tooling/*"]
],
dependencies: [
external_lib: [
requirement: "~> 1.2",
opts: []
],
private_tool: [
opts: [git: "https://example.com/private_tool.git", branch: "main"]
]
],
classify: [
tooling: [".", "tooling/test_support"],
proofs: ["apps/demo"]
],
publication: [
internal_only: ["tooling/test_support"],
optional: [
demo: ["apps/demo"]
]
],
artifacts: [
web_bundle: [
roots: ["apps/web"],
package: [
name: "web_bundle",
otp_app: :web_bundle,
version: "0.1.0"
],
output: [
docs: ["README.md", "guides/architecture.md"]
],
verify: [
artifact_tests: ["packaging/weld/web_bundle/test"],
hex_build: true,
hex_publish: true
]
]
]
]Example — Monolith
[
workspace: [
root: "../..",
project_globs: ["core/*", "runtime/*"]
],
artifacts: [
my_monolith: [
mode: :monolith,
roots: ["runtime/api"],
monolith_opts: [
shared_test_configs: ["core/contracts"],
extra_test_deps: [:bypass],
test_support_projects: ["tooling/test_support"]
],
package: [
name: "my_monolith",
otp_app: :my_monolith,
version: "0.1.0",
description: "My welded monolith"
],
output: [
docs: ["README.md"]
],
verify: [
hex_build: false
]
]
]
]