Skip to content

Latest commit

 

History

History
68 lines (38 loc) · 2.9 KB

CONTRIBUTING.md

File metadata and controls

68 lines (38 loc) · 2.9 KB

Contributing Guide

Hi! We are really excited that you are interested in contributing. Before submitting your contribution, please make sure to take a moment and read through the following guide:

Repo Setup

The repo is a monorepo using pnpm workspaces. The package manager used to install and link dependencies must be pnpm.

Debugging

VS Code

If you want to use break point and explore code execution you can use the "Run and debug" feature from vscode.

  1. Add a debugger statement where you want to stop the code execution.

  2. Click on the "Run and Debug" icon in the activity bar of the editor.

  3. Click on the "Javascript Debug Terminal" button.

  4. It will open a terminal, then type the test command: pnpm run test

  5. The execution will stop and you'll use the Debug toolbar to continue, step over, restart the process...

Pull Request Guidelines

  • Checkout a topic branch from a base branch, e.g. main, and merge back against that branch.

  • If adding a new feature:

    • Add accompanying test case.
    • Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
  • If fixing bug:

    • If you are resolving a special issue, add (fix #xxxx[,#xxxx]) (#xxxx is the issue id) in your PR title for a better release log, e.g. fix: update entities encoding/decoding (fix #3899).
    • Provide a detailed description of the bug in the PR. Live demo preferred.
    • Add appropriate test coverage if applicable.
  • It's OK to have multiple small commits as you work on the PR - GitHub can automatically squash them before merging.

  • Make sure tests pass!

  • Commit messages must follow the commit message convention so that changelogs can be automatically generated.

  • Use pnpm run lint:fix to format files according to the project guidelines.

Notes on Dependencies

This project aims to be lightweight, and this includes being aware of the number of npm dependencies and their size.

Think before adding a dependency

Most deps should be added to devDependencies even if they are needed at runtime. Some exceptions are:

  • Type packages. Example: @types/*.
  • Deps that cannot be properly bundled due to binary files.

Avoid deps that has large transitive dependencies that results in bloated size compared to the functionality it provides.

Think before adding yet another option

We already have many config options, and we should avoid fixing an issue by adding yet another one. Before adding an option, try to think about:

  • Whether the problem is really worth addressing
  • Whether the problem can be fixed with a smarter default
  • Whether the problem has workaround using existing options
  • Whether the problem can be addressed with a plugin instead