# Adding a formatter for CSS & JS

**URL:** <https://forum.djangoproject.com/t/adding-a-formatter-for-css-js/25754>\
**Category:** Django Internals\
**Created:** [November 29, 2023, 7:25pm UTC](https://forum.djangoproject.com/t/adding-a-formatter-for-css-js/25754 "2023-11-29T19:25:46Z")\
**Posts on this page:** 1\
**Showing post:** 29

<div class="post-metadata">

**Author:** ![mrchrisadams](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mrchrisadams/32/1904_2.png) [@mrchrisadams](https://forum.djangoproject.com/u/mrchrisadams)\
**Post date:** [January 30, 2025, 10:30am UTC](https://forum.djangoproject.com/t/adding-a-formatter-for-css-js/25754/29 "2025-01-30T10:30:30Z")

</div>

Hi gang!

I’ve started a thread about the CI thing here. I’ll add a bit more in the coming days.

> [@Smarter CI with Django](https://forum.djangoproject.com/t/smarter-ci-with-django/38374):
>
> I’m starting this thread here, prompted by @carltongibson mentioning it in this thread about a formatter for CSS and JS in Django: There was an aside about clever things you can do to reduce time in CI, that has been pioneered by the folks at Mozilla working on the Firefox browser. I’ll share the quote from Carlton, which was quoting an earlier convo between us before about optimising CI time: The best example I know in the public domain is the work Mozilla did when they looked at recodin…

FWIW, I’d also had a note of recommendation for Biome, I came across it via @adamchainz’s book, and it seems to offer a way to insulate yourself from the churn that people often associate with the js ecosytem.

> **Biome** has sane defaults and it doesn’t require configuration.
> 
> **Biome** aims to support [all main languages](https://biomejs.dev/internals/language-support/) of modern web development.
> 
> **Biome** [doesn’t require Node.js](https://biomejs.dev/guides/manual-installation/) to function.
> 
> **Biome** unifies functionality that has previously been separate tools. Building upon a shared base allows us to provide a cohesive experience for processing code, displaying errors, parallelize work, caching, and configuration.

If the intention is to provide a bunch of safe, relatively config-free defaults for js and css, without requiring people to know too much about Node.js, prettier syntax, ES lint and so-on, then a tool like Biome seems to fit fairly well. I also appreciate how there goal of providing a consistent set of hints and errors for js _and_ html _and_ css - if you don’t work with front end code all day long, having to learn how to read multiple kinds of errors from multiple kinds of all tools feels like overhead I’d happily avoid.

You can see all the languages / syntaxes supported now, and which ones are planned, in their [language support](https://biomejs.dev/internals/language-support/#_top) page.

Source: [biomejs/biome: A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP.](https://github.com/biomejs/biome)

**Update:** I was curious about whether the Biome binary is really just “node in a trenchcoat” - i.e. a full fat js runtime with a bit of js added to define it’s behaviour. This a fairly common pattern in the js ecosystem for creating binaries - I think Tailwind does this.

From what I can see though, Biome appears to be a ‘real’ Rust binary, if the [github release CLI action](https://github.com/biomejs/biome/blob/main/.github/workflows/release_cli.yml#L122-L151) is anything to go by. This makes me think it might help for making it easier to consume in the Python/Django ecosystem, because wrapping Rust binaries is pretty common pattern for Python projects now.

---

_[View the full topic](https://forum.djangoproject.com/t/adding-a-formatter-for-css-js/25754)._
