Skip to main content

repo-context

Provides tech stack, package layout, conventions, and build commands for the iTwin/presentation monorepo. Use when: working on any package or app in this repo, planning changes, implementing features, reviewing code.

Quellinformationen

Repository
iTwin/presentation
Letzte Quellaktivität
23. Oktober 2026 um 14:46
Erkannte Sprache von SKILL.md
Englisch
Sterne
6
Forks
2

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
repo-context
description
Provides tech stack, package layout, conventions, and build commands for the iTwin/presentation monorepo. Use when: working on any package or app in this repo, planning changes, implementing features, reviewing code.
# iTwin/presentation Repository Context ## Overview This is a **pnpm monorepo** orchestrated with **Lage** and versioned with **Changesets**. ## Tech Stack | Area | Technology | |------|-----------| | Language | TypeScript (strict, ES2022, dual CJS/ESM builds) | | UI | React 18, iTwinUI components, SCSS | | Testing | Vitest | | Linting | oxlint (type-aware, config in `.oxlintrc.json`); ESLint only for `@itwin/eslint-plugin` rules (`eslint.config.js`); oxfmt for formatting | | Platform | iTwin.js (iModels, ECSQL, Presentation APIs) | | Reactive | RxJS | | API docs | `@itwin/build-tools` (extract-api, docs) | | Node | ^24, pnpm 11 | ## Packages | Package | Path | Purpose | |---------|------|---------| | `@itwin/presentation-shared` | `packages/shared` | Shared utilities and types | | `@itwin/presentation-core-interop` | `packages/core-interop` | Interop layer with iTwin.js Core | | `@itwin/presentation-hierarchies` | `packages/hierarchies` | Hierarchy building from iModels and other sources | | `@itwin/presentation-hierarchies-react` | `packages/hierarchies-react` | React bindings for hierarchies | | `@itwin/presentation-components` | `packages/components` | React components (lists, property grids, tables) | | `@itwin/unified-selection` | `packages/unified-selection` | Unified selection storage | | `@itwin/unified-selection-react` | `packages/unified-selection-react` | React bindings for unified selection | | `@itwin/presentation-opentelemetry` | `packages/opentelemetry` | OpenTelemetry diagnostics integration | | `@itwin/presentation-tree-definitions` | `packages/tree-definitions` | Reusable UI-independent hierarchy definitions | | `@itwin/presentation-test-utilities` | `packages/test-utilities` | Internal test utilities | ## Apps | App | Path | Purpose | |-----|------|---------| | `full-stack-tests` | `apps/full-stack-tests` | Integration tests | | `test-app` | `apps/test-app` | Sample app (frontend + backend) | | `performance-tests` | `apps/performance-tests` | Benchmarks for hierarchies and unified selection | ## Key Conventions - For packages under `packages/`, a package is **private** when its `package.json` sets `"private": true`; otherwise it is **public**. A **production package** is any public package, plus any private package whose `package.json` declares a `license` field. Production packages require 100% test coverage; use `pnpm cover` to check it. - Packages produce ESM-only output via `tsconfig.lib.json` (built with `tsc`) or `tsdown` - Public API is tracked via `extract-api` and `.api.md` report files in `api/` folders - Copyright headers are required on all source files (enforced by `copyrightLinter.js`): ``` /*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ ``` - User-visible changes to released packages require a changeset (`pnpm change`); packages with `"private": true` do not require a changeset. - Build order is managed by Lage (`lage build`, dependencies via `^build`) - Linting is split between two tools that are always run separately: - `lint` runs oxlint with the root `.oxlintrc.json` (default rules, type-aware, plus the `react` plugin for packages that depend on React). Editors use oxlint too. - `lint:no-internal` runs ESLint with only `@itwin/no-internal` and `@itwin/no-internal-barrel-imports`, which oxlint can't run. It is never run implicitly; run it explicitly or rely on CI. - Suppress oxlint findings with `// oxlint-disable-next-line <rule>`; use `// eslint-disable-next-line @itwin/<rule>` only for the `@itwin` rules. - When adding a package that depends on React, add it to the `react` override in `.oxlintrc.json`. ## Common Commands | Scope | Build | Test | Lint | `@itwin` ESLint rules | Format | |-------|-------|------|------|------|--------| | All (repo root) | `pnpm build:all` | `pnpm cover:all` | `pnpm lint:all` | `pnpm lint:no-internal:all` | `pnpm format` | | Single package | `pnpm build` | `pnpm test` | `pnpm lint` | `pnpm lint:no-internal` | `pnpm -w exec oxfmt --check .` | | Scoped build | `pnpm lage build --to <package>` | — | — | — | — | | Format fix | `pnpm format:fix` | — | — | — | — |
Auf GitHub ansehen