Thank you for your interest in contributing to JointJS! This document provides guidelines and instructions for contributing.
- Node.js 22.14.0 (managed via Volta)
- Yarn 4.7.0
git clone https://github.com/clientIO/joint.git
cd joint
yarn install# Build distribution files
yarn dist
# Build all packages
yarn build# Run all tests
yarn test
# Run specific test types
yarn test-server # Server-side tests (Node.js/Mocha)
yarn test-client # Client-side tests (Browser/Karma/QUnit)
yarn test-ts # TypeScript type definition tests
yarn test-e2e # End-to-end tests (Puppeteer)
# Run tests for a specific file (joint-core)
cd packages/joint-core
npm run test-client -- --file=test/jointjs/graph.js# Check for linting errors
yarn lint
# Auto-fix linting errors
yarn lint-fixThis is a Yarn workspace monorepo. Main packages:
packages/joint-core- The main diagramming librarypackages/joint-react- React bindingspackages/joint-layout-directed-graph- Graph layout algorithmspackages/joint-layout-msagl- MSAGL layout integration
Before submitting a PR, please verify:
- Code is up-to-date with the
masterbranch - You've successfully run
yarn testlocally - If applicable, there are new or updated unit tests validating the change
- If applicable, there are new or updated @types
- If applicable, documentation has been updated
We use conventional commits. Format: type(scope): description
Examples:
fix(dia.Graph): correct batch event optionsfeat(dia.Paper): add new zoom featuredocs: update contributing guide
Types: feat, fix, style, refactor, test, chore, example
- TypeScript strict mode is enabled
- ESLint flat config (v9) via
@joint/eslint-config - Run
yarn lint-fixbefore committing
- Open an issue on GitHub
- Visit jointjs.com for documentation