Starting a TypeScript Project in 2021

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • ava

    Node.js test runner that lets you develop with confidence 🚀

    I actually started with Ava for a new project because it did a few things better than Jest. But ended up switching away because of this issue: https://github.com/avajs/ava/issues/2385

    Basically, if an assertion fails in the middle of an individual test, most test runners stop executing that test. Ava (by design) continues on with the rest of that test. This makes it harder to debug issues.

    (This not be a problem for everyone. I'm only mentioning it because it was a deal-breaker for me and wish I knew that going in.)

  • tsdx

    Zero-config CLI for TypeScript package development

    I looked at TSDX for a project and was rather put off by the fact that:

    * It hasn't been updated for six months

    * It doesn't appear to support TypeScript 4 properly[1]

    [1] https://github.com/formium/tsdx/issues/926

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

  • typescript-boilerplate

    A modern TypeScript project setup, for Node.js and browsers

  • esbuild

    An extremely fast bundler for the web

  • berry

    📦🐈 Active development trunk for Yarn ⚒

    $(error "yarn not installed (see https://yarnpkg.com)")

  • genetic

    🧬 Typescript Genetic Algorithm Framework built using deno (by bermi)

    This!

    After working with node.js for more than eight years I decided to give deno a try (https://github.com/bermi/genetic) and I’ve been gratefully surprised by the development experience.

    I’m just missing a simple way to include deno code on my existing node.js and browser projects.

  • uvu

    uvu is an extremely fast and lightweight test runner for Node.js and the browser

    Related: uvu[1] which I think is intended to be a barebones version of Ava. I like the idea of not having a big fragile graph of dependencies to be able to run some tests. Not sure if uvu is any good for Typescript though.

    1: https://github.com/lukeed/uvu

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • generator-xavdid

    [Utility] Start Typescript projects the same way I do!

    I do this sort of thing often enough that I wrote a Yeoman generator to scaffold everything: https://github.com/xavdid/generator-xavdid

    Maybe overkill, but it's saved me from having to remember which recent project to reference to remember exactly how I like eslint set up, etc. Been a very smooth experience!

  • deno

    A modern runtime for JavaScript and TypeScript.

    Admittedly as someone who doesn't code Rust, I have never tried to use cargo to install deno. On macOS I use brew.

    brew install deno # works with no issues

    Though, at the bottom of https://deno.land/#installation, one sees the incantation:

    cargo install deno --locked

    I removed brew's deno, installed rust (via brew) and then tried this. No compile errors. And swc_ecma_transforms compiled successfully.

       Compiling swc_ecma_transforms v0.45.1

  • rescript-compiler

    The compiler for ReScript.

    I'm much more interested in ReScript[0] than TypeScript, but I guess that TypeScript is much more appealing to C# programmers and much more supported as a whole.

    Anyone here has some experience with ReScript (or ReasonML, for what it matters) to share with the rest of us?

    [0] https://rescript-lang.org/

  • direnv

    unclutter your .profile

    No worries, no one really talks about it, but you see makefiles all over.

    > Actually, this: `USER=my_name make psql` and this: `make psql USER=my_name` I don't like that much: No command line completion of `USER=my_name`.

    > Makefile targets like `mycluster-kubie` are nice, although they can result in a combinatorial explosion (if one needs two or more parameters).

    True, it's a bit inconvenient!

    > It seems to me that after all, it'll be Deno or maybe Rust "scripts" that I'll want to use, combined with Make — Make for building, and Deno for running things.

    This sounds wonderful -- the biggest downfall of make is when you start to try and do complicated things with it, so your usecase seems awesome. Make is good for that glue/orchestration in my opinion -- when you need to run pulumi/terraform right before you do some deno-scripted setup.

    > Thanks for the extra pieces of software :- ) Direnv looks nice, makes me nervous about security exploits though (seems it automatically parses a file in the current directory, sometimes provided by strangers, via a Git repo that maybe I just wanted to look at). Hmm, https://github.com/direnv/direnv/issues/23 "security considerations"

    Ahh so for that, I don't check in my `.envrc` folders but yeah that's certainly an issue -- whenever you encounter a `.envrc` you have to allow it though!

    Every time you enter a folder that direnv hasn't seen before, or the file in there changes, you have to run `direnv allow` for it to be taken up.

    > Didn't know about entr. Currently I use inotifywait (from package inotify-tools in Debian)

    Ahh then that's probably just as good -- A friend showed me entr like.... 10+ years ago now and it's been a trusted tool on projects ever since, whenever the language/framework doesn't really have it, or I feel like some bit of work needs to be more streamlined/shorter feedback.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts