CodeVetter · Repo Unpack · System map
biomejs/biome
The Rust workspace lives under crates/ with the biome binary in crates/biome_cli. Language crates (parser, formatter, analyzer, semantic model) sit beside shared infrastructure (biome_service, biome_configuration, biome_lsp, biome_fs, biome_rowan). Node consumers are in packages/@biomejs/biome, @biomejs/js-api, and @biomejs/backend-jsonrpc. Build and test entry points are Cargo, justfile recipes, pnpm workspace scripts, and GitHub Actions on main. Persistence is mostly the filesystem (biome.json, file system trait, daemon socket) rather than a database.
- Root Cargo.toml names the workspace biome at version 0.7.0, uses resolver 2, and excludes fuzz and benchmark packages from the default members.
- The published CLI crate is crates/biome_cli (package name biome, version 0.0.0 in-tree). Its binary entry is src/main.rs, which calls biome_cli::run_server unless BIOME_LOG_PATH is set, in which case it initializes env_logger from that directory.
- Supported document languages are enumerated as JavaScript, Json, Jsonc, Css, Graphql, Html, Grit, Tailwind, Yaml, Svelte, and Vue in DocumentFileSource.
- Configuration is modeled in biome_configuration (package version 0.0.1 in-tree, described as biome_json in the scan inventory). Schema and partial types are generated; users typically commit biome.json or biome.jsonc.
- The Node package @biomejs/biome is a platform-specific binary wrapper. The monorepo root package.json is private, named @biomejs/monorepo, and delegates test/lint/format to just and cargo.
- pnpm-workspace.yaml includes packages/* and packages/@biomejs/*. npm publishing and WASM/JSON-RPC backends are separate packages from the Rust CLI.
- CI on push/PR is .github/workflows/main.yml. It runs Rust tests, lint, format checks, and related jobs. Autofix for generated artifacts is a separate workflow.
- There is no application database. File IO goes through biome_fs (OsFileSystem, MemoryFileSystem) and configuration files on disk. The daemon uses a local socket via biome_lsp_factory / biome_service daemon modules.
- Fuzz targets live in fuzz/ (cargo package names still carry historical rome_* names such as the typescript formatter fuzzer) and are excluded from the main workspace members.