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 recommended way of using the configuration for monorepositories is to follow the official guidelines. For example, the following layout of the repository is recommended:
project
biome.json
packages
server
biome.json
logger
biome.json
frontend
biome.json
The configuration file at the root of the project is used as the root configuration that each of the child packages extend from. The configuration can simply extend the base configuration and be modified to match your team's preferences.
{
"extends": ["@cookielab.io/biome-config/base"]
}The extended configuration of each package then has to specify it is not the root configuration file with "root": false" and reference the root configuration file in the extends field as a relative path. For example:
{
"root": false,
"extends": ["../../biome.json", "@cookielab.io/biome-config/react"]
}Nevertheless, if you do not plan on sharing any project-wide modifications to the configuration, you can skip the // extension and drop the top-level configuration file. Each configuration preset in this project already extends from base by default.
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