CLAUDE.md 1.3 KB

CLAUDE.md

Project Structure

Excalidraw is a monorepo with a clear separation between the core library and the application:

  • packages/excalidraw/ - Main React component library published to npm as @excalidraw/excalidraw
  • excalidraw-app/ - Full-featured web application (excalidraw.com) that uses the library
  • packages/ - Core packages: @excalidraw/common, @excalidraw/element, @excalidraw/math, @excalidraw/utils
  • examples/ - Integration examples (NextJS, browser script)

Development Workflow

  1. Package Development: Work in packages/* for editor features
  2. App Development: Work in excalidraw-app/ for app-specific features
  3. Testing: Always run yarn test:update before committing
  4. Type Safety: Use yarn test:typecheck to verify TypeScript

Development Commands

yarn test:typecheck  # TypeScript type checking
yarn test:update     # Run all tests (with snapshot updates)
yarn fix             # Auto-fix formatting and linting issues

Architecture Notes

Package System

  • Uses Yarn workspaces for monorepo management
  • Internal packages use path aliases (see vitest.config.mts)
  • Build system uses esbuild for packages, Vite for the app
  • TypeScript throughout with strict configuration