Skip to content

cookielab/biome-configuration

Repository files navigation

Cookielab's Biome Configuration


Check

npm version


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:

  1. Security a. Being proactive about bugs instead of reactive
  2. Performance
  3. Developer Experience a. Explicit over implicit code b. Consistent code style

Documentation

For detailed explanation on how the configuration is set up, see the attached documentation.

Installation

First add the package as development dependency.

pnpm add -D -E @cookielab.io/biome-config
yarn add -D -E @cookielab.io/biome-config
npm install -D -E @cookielab.io/biome-config

Then extend your Biome configuration with the appropriate configuration:

{
  "extends": ["@cookielab.io/biome-config/base"]
}

Monorepo Usage

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.

Available Configurations

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.

Development

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 generate

The project is linted with the output configuration. To lint it, just build the project and then run Biome:

pnpm build
pnpm lint

Finally, to generate the documentation, simply run

pnpm doc