Opened 15 months ago
Last modified 3 days ago
#35007 assigned Cleanup/optimization
Add a formatter for CSS and JS
Reported by: | Tom Carrick | Owned by: | Tom Carrick |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
From https://forum.djangoproject.com/t/adding-a-formatter-for-css-js/25754:
The idea is to add formatting for CSS and JS.
For motivation, I find myself fairly often in the admin CSS (especially lately) and it’s reasonably laid out for the most part, but there are things that are a little off. Sometimes the indentation is different from the rest of the file, for example. The JS is in a bit worse shape I think, some of the files have whitespace issues. These could be fixed but it would be better to enforce them in a way that’s easier to review, so I think a formatter makes sense here. What’s annoying (for me) is that when editing files, sometimes my editor “fixes” the issues for me, then I have to revert them and save without formatting. If I don’t spot my editor’s work, it’s more annoying to fix. Of course I could turn this stuff off somewhere, but if it’s annoying for me I’m sure it’ll be annoying for others as well.
But barring differing opinions there, the process would be something like:
Make a PR with three commits. The first sets up the machinery, installs the formatter, adds to pre-commit, etc. The second does the work and the third adds the second commit to .git-blame-ignore-revs. As far as I know, the same as when black was set up.
Change History (8)
comment:1 by , 15 months ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 15 months ago
Description: | modified (diff) |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:4 by , 15 months ago
We can have some discussion about whether ESLint's formatting rules are enough, but I don't think they are (at least the current ones). For example, they don't seem to catch obvious whitespace issues (whitespace only lines in SelectFilter2.js, whitespace at end of line in RelatedObjectLookups.js I found in the first two files I opened, so there are probably others).
It was suggested in the forum post to use ESLint only for linting, and use prettier for formatting, and I think this is a good idea.
comment:5 by , 14 months ago
ESLint’s formatting rules definitely aren’t enough. It’s more "auto-fix white-space in a few very specific scenarios" than "format everything". ESLint themselves have also deprecated their formatting rules and recommend using a dedicated formatter.
comment:6 by , 3 days ago
Description: | modified (diff) |
---|---|
Summary: | Add prettier to format CSS and JS → Add a formatter for CSS and JS |
comment:7 by , 3 days ago
I made some changes to the description and summary to make this tool-agnostic as there are discussions around using other tools, particularly Biome, which I would like to draft a PR for soon.
comment:8 by , 3 days ago
I had another look into this today. Before trying Biome I'd like to wait for 2.0, it will make some things easier and it would be nice to not add a formatter and then not long after need to migrate to a new version.
The forum topic has had very positive reactions, accepting.