Home
Framework design

Package Strategy

Single-package, subpath, and publishing strategy

strata-game-library is the only public npm package. The repository remains a pnpm workspace for development, but its core systems, adapters, and plugins are private implementation modules bundled behind explicit public subpaths.

Install and import contract

Install exactly one Strata package, plus the peers needed by the subpaths you use:

pnpm add strata-game-library react react-dom three @react-three/fiber @react-three/drei
import { createRPGGame } from 'strata-game-library';
import { StrataGame } from 'strata-game-library/r3f';

The root is renderer-independent. Public subpaths such as /core, /shaders, /presets, /r3f, /reactylon, /pixi, /audio-synth, /model-synth, /capacitor, /react-native, /astro, and /yuka preserve optional peer boundaries without creating separately installable npm identities.

/yuka is the model for third-party ecosystem adapters: it declares Yuka and its rendering peers as optional peer dependencies, and is imported only by a game that has deliberately selected that runtime. Core and ordinary renderer adapters must not import third-party ecosystem adapters. This leaves room for future integrations, including ECS runtimes such as Koota, without turning the default package surface into a dependency bundle.

Workspace disposition

Workspace areaStatusPublic surface
packages/strata-game-libraryPublic and release-trackedstrata-game-library and its export-map subpaths
packages/, adapters/, plugins/ implementation modulesPrivateBundled behind the public package; never separately published

Release contract

Release-please tracks only packages/strata-game-library. CD builds, validates the exact tarball, and publishes only that package through npm trusted publishing with provenance. No npm credential is exposed to pull requests.

Historical scoped packages are removed rather than preserved as aliases. They must not be reintroduced in documentation, release configuration, or new consumer examples.

Acceptance checklist

  • One public package exists with explicit subpath exports.
  • Release-please tracks only that package.
  • Workspace implementation modules are private.
  • The public tarball has no scoped runtime or type dependency.
  • strata-game-library is published and its trusted publisher is verified.
  • Historical scoped packages and their npm organization are deleted.