TL;DR: I wrote a new ESLint plugin.
I've been working on a personal project a bit recently, and it's frontend was Clojurescript as I didn't really want to have to write any Javascript ever again. However, Clojurescript has it's own issues both external e.g. no test coverage, at all, and just the lack of typing support was getting on my nerves (yes, I know about spec but it seems rather painful to just get typing support) and so I was starting to think about moving onto something else. Except most of the other non-JS options were more annoying, which sucked.
For the day job, I've been doing some Typescript recently, and it's actually been not too bad. These days, with things like Vite, it's now possible to get fast hot reload (as in immediately), and Typescript has some really nice advances for type systems that are actually kinda about the best I've seen (at least for things that are less bleeding edge academia, and more "actually usable tool").
ESLint lets you also do a lot of things to smooth off the rough edges, but then I hit a bug today that wasn't catchable by any of this, so I've written a little plugin to fix that. Basically, if you've got an on-click
handler where you want to do magic SPA stuff not "go to the named URL", you need to remember to call event.preventDefault()
and remembering to do this is tedious. eslint-plugin-require-prevent-default fixes this with mostly just a little bit of config.
{
plugins: [...other plugins..., "require-prevent-default"],
rules: {
.. other rules ...
"require-prevent-default/require-prevent-default": "error",
}
}
Thanks to Daria's guide on ESLint plugins and the wonderful AST Explorer tool for making this much easier.
Comments
With an account on the Fediverse or Mastodon, you can respond to this post. Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one. Known non-private replies are displayed below.