| doc-schema-version | 1 | |||
|---|---|---|---|---|
| title | Development Guide | |||
| summary | Setup, source layout, generated outputs, and contribution rules. | |||
| read_when |
|
|||
| doc_type | guide |
- Node.js
>=24. - Corepack-enabled
pnpm. - A local checkout of this repository.
Install dependencies:
pnpm installsrc/: TypeScript source.test/: regression tests, schema fixtures, and validator helpers.docs/: maintained project documentation.demos/node: Node.js ESM demo.demos/vite-demo: React, TypeScript, and Vite demo.scripts/: build, package, demo, and smoke-test automation.tools/ooxml-validator: OOXML validator installer and wrapper.dist/: generated package runtime and declaration artifacts.
Do not hand-edit generated dist/ outputs unless the task explicitly asks to
refresh release artifacts.
Build the source bundle used by tests:
pnpm run buildTypecheck source:
pnpm run typecheckRun regression tests:
pnpm run test:unitCheck package contents:
pnpm run package:lint
pnpm run pack:check
pnpm run test:packageSmoke-test the maintained demos against the built workspace package:
pnpm run test:demosBefore changing emitted OOXML, read OOXML agent context.
For serialization changes:
- Search the local source and tests first.
- Use the configured OOXML MCP server for schema structure, children, attributes, enums, namespaces, and OPC package metadata.
- Use the configured Microsoft Learn MCP server for PowerPoint and Open XML SDK behavior.
- Add or update a focused fixture in
test/schema.test.js. - Run schema validation:
./tools/ooxml-validator/install.sh
pnpm run test:schemaThe package is ESM-only. Changes to package exports, generated filenames, or package contents should preserve the support contract documented in runtime and package support.
Package-boundary verification:
pnpm run build
pnpm run package:lint
pnpm run pack:check
pnpm run test:packageFor Node demo changes:
pnpm run test:demo:nodeFor Vite demo changes:
pnpm run test:demo:viteFor both:
pnpm run test:demos