Changelog - 2026-10-23
Formatting moves to bun fmt and bunfig.toml
Breaking Change EnhancementIn one line. devz lint and the Makefile format with bun fmt, the format lives in one [fmt] table in bunfig.toml, and the oxfmt presets are gone.
toml
# bunfig.toml
[fmt]
printWidth = 100
singleQuote = true
arrowParens = "avoid"
flavor = "oxfmt"What changed
devz lintformats withbun fmt. The third step isbun fmt --no-script, with--checkunless you pass--fix. Each pattern in.configs/formatters/.ignorereaches it as--ignore-pattern.- The format is one table.
bun fmtreads[fmt]in thebunfig.tomlof the folder it runs in or of any parent, so one root file serves every package. The table above gives byte-for-byte the outputoxfmtproduced: measured on the IGNIS repository, no file differs, in 21 projects.flavor = "oxfmt"keeps it that way onceoxfmtis no longer installed; without it Bun formats like Prettier and 14 files change. - More than code is formatted.
devz lintandmake lintalso check every.json,.jsonc,.yml,.yaml,.css,.htmland.vuefile; Markdown is not formatted. A file a tool regenerates on its own (drizzle-kit snapshots) goes in.configs/formatters/.ignore. Rundevz lint --fixonce to format yours; parsed values never change. package.jsonkeys are sorted.bun fmtorders the keys likesort-package-jsonand alphabetizes the dependency blocks, and nothing else.npm version,bun add,bun updateandbun removekeep a sorted file sorted. SetsortPackageJson = falsein[fmt]to keep your own order.- One style for backend and frontend. There is no separate browser variant.
- Bun 1.4.4 is the floor.
bun fmtis new in 1.4.4;@venizia/dev-configsdeclares"bun": ">=1.4.4". - The
oxfmtconfig files are gone. Bun loads anoxfmt.config.mtswhen it finds one, and fails if@venizia/dev-configs/formattersno longer resolves.
Breaking changes
WARNING
@venizia/dev-configs no longer exports oxfmtConfigs, browserOxfmtConfigs and prettierConfigs, and the @venizia/dev-configs/formatters subpath is removed. The oxfmt and prettier peer dependencies are gone, and eslintConfigs (and ReactEslintConfigs, which builds on it) no longer include the Prettier rule or its eslint-plugin-prettier and eslint-config-prettier dependencies.
Before:
typescript
// .configs/formatters/oxfmt.config.mts
import { defineConfig } from 'oxfmt';
import { oxfmtConfigs } from '@venizia/dev-configs/formatters';
export default defineConfig(oxfmtConfigs);After:
- Add the
[fmt]table above to thebunfig.tomlat the root of your repository. - Delete every
.configs/formatters/oxfmt.config.mts; keep.configs/formatters/.ignore. - Remove
oxfmtfrom yourdevDependenciesand your catalog. - Use Bun 1.4.4 or newer.
- A project that sorts Tailwind classes adds
sortTailwindcss = trueand installstailwindcss; one that must not sortpackage.jsonaddssortPackageJson = false.
Who is affected
| You have | Do this |
|---|---|
A project that runs devz lint | The steps above |
oxfmt.config.mts importing from @venizia/dev-configs/formatters | The steps above; the import no longer resolves |
JSON, YAML, CSS, HTML or Vue files, or a package.json out of sort-package-json order | devz lint --fix once; the lint fails until then |
A fmt script in package.json | bun fmt would run it; devz lint passes --no-script, so it still formats. Prefer not to name a script fmt |
| The VS Code Oxc extension for formatting | It formats with oxfmt, which is no longer a dependency; format with bun fmt or devz lint --fix |
Details
bun lintis not in a stable Bun yet, so oxlint and ESLint stay.- A project that used the Prettier lint rule drops
prettierfrom its dependencies: formatting isbun fmt. - Not formatted: files in a language
bun fmtdoes not support, such as.astro; a directory run skips them.
| File | Package |
|---|---|
src/cli/lint.ts | dev-configs |
src/formatters/ (removed) | dev-configs |