Latest recommendations for Elm dev tools?

It seems like every few months, I discover something great that I wish I’d known about earlier… I’m listing a few I’ve been using, and am curious what else is out there :slight_smile:

Also (or in particular), what are your recommendations for compression after compiling with --optimize? The Elm guide mentions uglify; there’s also elm-minify, which says it’s deprecated in favor of the Google Closure Compiler. (There was at least one thread about this in the past. …)

Testing

  • elm-test
  • elm-coverage

Formatting

  • elm-format

Linting

  • elm-analyse

Other

  • elm-live
9 Likes

Excellent question!

There are a lot of neat tools coming out lately. elm-coverage is a wonderful tool, and I don’t think it’s widely known. I think there are many other tools like that! Here are a few others that I really enjoy and use on a regular basis:

General Elm development tools

  • elm-optimize-level-2 is a really neat project. I usually use that along with that project’s instructions on minification to run terser and the optimized compilation.
  • elm-tooling-cli - (we did an Elm Radio episode on elm-tooling CLI)
  • elm-review - it’s like elm-analyse (which is no longer maintained I believe), but it is made to be a platform where the community can build all sorts of custom rules and autofixes. It’s an excellent tool, highly recommended! There’s already a vibrant ecosystem of great Rules you can setup, and it’s only going to get better. We did a couple of Elm Radio episodes about elm-review as well (episode 3 and episode 21)
  • Elm Debug Helper is a Chrome plugin for nicer formatted Debug.log output of Elm data types
  • elm-json is a command line tool that’s the de facto way to install Elm packages and upgrade dependencies, but this isn’t easy to discover that for newcomers.

Handy Web Codegen Tools

  • html-to-elm.com/ - this is a tool I built for turning HTML and SVG into Elm. There have been other tools like this in the past, but I tried to polish some of the rough edges of past tools, as well as add support for generating code for elm-tailwind-modules
  • (There used to be a helpful page called json2elm.com, but I noticed that the domain lapsed recently. The is still code is hosted here on GitHub)

Tools for Type-Safe Domain-Specific-Languages

There are a lot of “Types Without Borders” category tools (keeping a type-safe bridge between domains). Here are some of my favorites (I’m a bit biased on some of these :wink:)

Tools for Package Authors

I wrote a guide with a collection of best practices for package authors here: GitHub - dillonkearns/idiomatic-elm-package-guide: Everything you need to know to publish a useful, idiomatic Elm package!. I also have a starter template repo for Elm packages: GitHub - dillonkearns/elm-package-starter: Starter template for an Elm package..

There are several tools that Elm package authors use, but they are sort of implicit knowledge that people pick up by word of mouth.

elm-doc-preview (it’s a CLI tool for live reloading documentation on your local machine, as well as a web site for sharing work-in-progress docs before you publish a package version)
elm-verify-examples - allows you to run elm-test test cases by defining examples with the expected output in your Elm package’s docs. This is important because it helps you keep your docs in sync as “living documents.”
elm-publish-action - helps automate running elm publish within your CI pipeline so you can run it after your CI passes

Summary

I’m probably missing tons of cool tools. These are just the ones that I find myself reaching for often.

I’d love to hear from other people about what their favorite gems are out there (I know there are a lot more!).

16 Likes

In addition to those already listed, you can give a try at elm-test-rs as an alternative to elm-test if you want capture of Debug.log or try to avoid npm.

I can also recommend elm-tooling-action to complement elm-tooling-cli in a GitHub CI. I’m a bit biased since I made those two tools ^^ (elm-test-rs and elm-tooling-action).

There is also the elm language server which is the best way to have a great coding experience when using VS Code or Vim.

10 Likes

not elm tools, but as you asked for optimize explicitly, it seems like quiet some people are using parcel for packaging and terser seemed to be the way to go the last time I checked when it comes to minifying.

Esbuild is what I use at the moment.

One of the technical limitations with it for Javascript-folks has been code-splitting, but as Elm goes for small single build-output, I think it does everything you we want well.

I’m pretty sure Evan Wallace is working on code-splitting at the moment, but can’t remember.

I’ll be doing a benchmark on available tooling against realworld-example in terms of bundling/minification this week. I’ll try and remember to post it here.

1 Like

There’s a big categorised list of all the tools that I’ve come across (currently at 91 entries) here: https://korban.net/elm/catalog/tools

4 Likes

I didn’t want to derail this thread, so I posted this question as a separate topic.

I’d be curious to hear if you’ve figured this out!

1 Like

Thanks for the feedback, I’ve added a few to my list!

I wonder if there is some enhancement to the official package list that could help with discovery and filtering as the community grows (e.g. download counts or ratings like Hackage)…

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.