This package contains Biome configuration for our code style.
The code style aims to be as strict and defensive as possible to avoid bugs & unwanted side-effects and to improve code readability.
The ruleset is inspired by the Tiger Style coding principles and pretty much boils to the following core principles:
- Security a. Being proactive about bugs instead of reactive
- Performance
- Developer Experience a. Explicit over implicit code b. Consistent code style
For detailed explanation on how the configuration is set up, see the attached documentation.
First add the package as development dependency.
pnpm add -D -E @cookielab.io/biome-configyarn add -D -E @cookielab.io/biome-confignpm install -D -E @cookielab.io/biome-configThen extend your Biome configuration with the appropriate configuration:
{
"extends": ["@cookielab.io/biome-config/base"]
}The following configurations are available. You can click through to their respective documentation for more details.
| Name | Import | Description |
|---|---|---|
| Base | @cookielab.io/biome-config/base |
The base configuration that all rulesets extend from. All specific rules (React, Node, etc.) are disabled. |
| Frontend | @cookielab.io/biome-config/frontend |
Extends from Base and has all the frontend-related rules added. Mostly accessibility and CSS-related rules. |
| React | @cookielab.io/biome-config/react |
Extends from Frontend. Adds all the React-related rules. |
| Next | @cookielab.io/biome-config/next |
Extends from React. Adds all the Next.js-related rules. |
| GraphQL | @cookielab.io/biome-config/graphql |
Extends from Base. Adds all the GraphQL-related rules. |
| Node | @cookielab.io/biome-config/node |
Extends from Base. Adds all the Node-related rules. |
In addition to the rulesets above, a top-level configuration is included. See the documentation for more information.
The project uses autogenerated Zod schemas from the included Biome JSON Schema. However, the conversion has to go through two convertors as the direct ones don't really work. First, the schema is converted into TypeScript types and then to Zod. See script/generateSchema.ts. To generate the schema after a Biome update, simply run:
pnpm generateThe project is linted with the output configuration. To lint it, just build the project and then run Biome:
pnpm build
pnpm lintFinally, to generate the documentation, simply run
pnpm doc