Tyler: A CLI Tool for Easy Package Publishing

tyler is a JavaScript tool that can make the life a lot easier when developing packages (libraries and templates), without the cumbersome editing and copy-pasting, manual folder mangement, etc. I developed it in three days so it is still immature, but I have (not exactly but) succesufully published my new package. It has the following features now:

  • :inbox_tray: Install package locally to be able to use with @local/somepkgs:0.1.0
  • :page_facing_up: Compile relative entrypoint import (e.g. ../lib.typst) to preview import (e.g. @preview/somepkgs:0.1.0)
  • :arrows_counterclockwise: Bump the version of the package interactively or with specified semver as CLI argument
  • :package: Package the library or package into typst/packages ready for publishing
  • :mag: Check if the package manifest (typetst.toml) is valid before publishing
  • :rocket: Semi-automatic publishing that creates a PR to the Typst preview package repository

The next planned features include PR template prompting and better publishing workflow. I’m also planning on to improve the process more by receiving feedback from package maintainers like you! Welcome to contribute by commenting.

You can see the repository down here:

You can try it now by:

bun i -g @mkpoli/tyler
tyler build -i -p

recording-tyler

Full Video:
https://cdn.discordapp.com/attachments/1308756183330459648/1308756183703621632/recording.mp4

6 Likes

Sounds good, was thinking about doing the same thing! But why in JavaScript :sob:

2 Likes

Yeah, I’m also thinking about that :slight_smile:

Actually as I stated in the release note in Japanese, translated to English as: (TL;DR: SKILL ISSUE :smiling_face_with_tear:)

The reason I developed with JavaScript (TypeScript) + Bun is that Python is too heavy, and the CLI culture is most developed in the web domain, so all the necessary development tools are readily available. I actually wanted to develop in Rust, but I thought it would never finish if I developed in Rust, so I decided to develop in JS for now, simplify the experimental package development process, and ultimately hope that the official team will write the official workflow in Rust.