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:

1 Like

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.