A local manager for Typst templates and packages
Project description
Typst Forge
Typst Forge is a small local manager for Typst packages and templates.
It can:
- scaffold a new Typst repo with
git,typst.toml,src, andtemplate/when needed - install local development repos into Typst's package directory
- install release repos from GitHub or any git URL
- manage installed packages/templates with versioned registry entries
- fall back between symlink and copy modes for platform-friendly installs
- bump a project's Typst version and create a matching Git commit and tag
Install
Run the CLI from a checkout with uv:
uv run typst-forge --help
To run the published package from PyPI, use uvx:
uvx typst-forge --help
To run directly from this checkout without installing it, use uvx:
uvx --from . typst-forge --help
You can also run it directly from GitHub:
uvx --from git+https://github.com/marcosousapoza/typst-forge typst-forge --help
Commands
typst-forge init my-template --kind template --namespace local --version 0.1.0
typst-forge init my-package --kind package --version 0.1.0
typst-forge init . --kind template --namespace local --version 0.1.0
typst-forge install ./my-package --link-mode copy
typst-forge install github:owner/repo@v1.2.3
typst-forge list
typst-forge status my-package
typst-forge update my-package
typst-forge remove my-package
typst-forge bump patch
typst-forge bump minor
typst-forge bump major
typst-forge bump 2.0.0
init creates a .gitignore and initializes the project as a Git repository.
Moving a local project
If a symlinked local project moves, install it again from its new location:
typst-forge install /new/path/to/my-package
In a terminal, Typst Forge shows the old and new source paths and asks before
repointing the existing registry symlink. In scripts and CI, pass --force to
confirm the relocation explicitly:
typst-forge install /new/path/to/my-package --force
Versioning
- local repos use the
typst.tomlpackage version unless a matching git tag is present atHEAD - GitHub and other git URLs install from release tags
- tags can be written as
v1.2.3or1.2.3; the stored Typst version is normalized to1.2.3 - installed entries live under
~/.local/share/typst/packages/<namespace>/<package>/<version> - template scaffolds import their library through Typst’s package path, for example
@local/<package>:<version>
Bumping a project
Run bump from a clean Typst project repository. It updates the [package]
version in typst.toml, updates an exact scaffolded self-import when present,
creates a Release X.Y.Z commit, and adds an annotated vX.Y.Z tag.
Existing local installations of the old project version are preserved. Typst Forge adds the new version beside them using the same namespace and link mode. An uninstalled project is not installed as a side effect.
bump only changes the local Git repository. To publish the commit and tag to
either GitHub or GitLab, push them with ordinary Git commands:
git push origin HEAD
git push origin v1.2.3
On GitHub, an Actions workflow
can select pushed version tags with on.push.tags. On GitLab, a
tag pipeline can select
them with if: $CI_COMMIT_TAG. A hosted GitHub or GitLab Release is separate
from the Git tag and can be created by CI or through the provider UI if desired.
Tests
Run the in-repo test suite with:
uv run python -m unittest discover -s tests -v
Publishing
The GitHub Actions workflow in .github/workflows/publish.yml publishes tagged releases to PyPI with trusted publishing.
Create and push a version tag like v0.1.0 to trigger it.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file typst_forge-0.1.5.tar.gz.
File metadata
- Download URL: typst_forge-0.1.5.tar.gz
- Upload date:
- Size: 17.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
412ce3fa90300c53a5e42dcdd293a7570c01375a5562fe40a52424a9e8746675
|
|
| MD5 |
3e960b5525e5627da0b66aa5156e9bfe
|
|
| BLAKE2b-256 |
e1d5aaf3802de7dff3fe1fa3e56f8bca465cf69399805185e354ac84951e0cbf
|
Provenance
The following attestation bundles were made for typst_forge-0.1.5.tar.gz:
Publisher:
publish.yml on marcosousapoza/typst-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
typst_forge-0.1.5.tar.gz -
Subject digest:
412ce3fa90300c53a5e42dcdd293a7570c01375a5562fe40a52424a9e8746675 - Sigstore transparency entry: 2199930223
- Sigstore integration time:
-
Permalink:
marcosousapoza/typst-forge@a643fa85e4fdfe44e7fcebf7584cb1882f51fea9 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/marcosousapoza
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a643fa85e4fdfe44e7fcebf7584cb1882f51fea9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file typst_forge-0.1.5-py3-none-any.whl.
File metadata
- Download URL: typst_forge-0.1.5-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29fb15281be4f42c7003f83275203e527cbebda47bffcfc9d6352bc6352d6097
|
|
| MD5 |
7981afba28221ac2fc2e09624d1c06d9
|
|
| BLAKE2b-256 |
5919ef8dedb66cc7d4a5e3cf470fcd68f6de669b6f90eaad31fc78ec662ed28c
|
Provenance
The following attestation bundles were made for typst_forge-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on marcosousapoza/typst-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
typst_forge-0.1.5-py3-none-any.whl -
Subject digest:
29fb15281be4f42c7003f83275203e527cbebda47bffcfc9d6352bc6352d6097 - Sigstore transparency entry: 2199930377
- Sigstore integration time:
-
Permalink:
marcosousapoza/typst-forge@a643fa85e4fdfe44e7fcebf7584cb1882f51fea9 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/marcosousapoza
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a643fa85e4fdfe44e7fcebf7584cb1882f51fea9 -
Trigger Event:
push
-
Statement type: