Migration from pnpm to npm: Tooling, CI, Scripts, and Lockfile Standardization
This release is driven by a focused effort to migrate the entire project ecosystem—including developer tooling, CI automation, build/test workflows, and documentation—from pnpm to npm. The changes unify the way dependencies are managed, built, tested, and published across both local developer and CI environments, helping to reduce confusion, eliminate inconsistencies, and simplify ongoing maintenance. Please review the following sections for a detailed breakdown of what has changed, how it may impact your development workflow, and what to expect going forward.
CI/CD Workflow and Build Pipeline Updates
- CI Jobs Updated to npm
- All GitHub Actions workflows (
deploy-docs.yml,npm-publish.yml,test.yml) have been reworked to use only npm for installing dependencies, building, testing, and publishing the package. - All references to pnpm setup, commands, and flags (such as
pnpm install --frozen-lockfile --strict-peer-dependencies) have been removed and replaced with npm equivalents (npm ci,npm run build,npm test, etc). - The publish workflow was migrated from pnpm-based (
pnpm-publish.yml) to npm-based (npm-publish.yml), reflecting the exclusive use of npm for preparing and publishing releases. - Coverage reporting and other workflow steps are now npm-native, avoiding pnpm-specific commands or cache formats.
- All GitHub Actions workflows (
Lockfile and Package Manager Standardization
- Switch to package-lock.json
- The project no longer maintains or references
pnpm-lock.yaml. This file (and related ignore rules) has been deleted from the repository. - Standardization on
package-lock.jsonensures compatibility and consistency for all contributors and CI systems relying on the standard npm lockfile. .npmignoreanddocs/.gitignorehave been updated to remove any exclusions related to pnpm lockfiles.- The
packageManagerfield referencing pnpm has been removed from allpackage.jsonfiles, ensuring npm is detected as the canonical package manager.
- The project no longer maintains or references
Developer Tooling and Scripts
-
Script and Lifecycle Migration
- All top-level and documentation site scripts in
package.json,docs/public/package.json, anddocs/README.mdhave been rewritten to use npm rather than pnpm (e.g.,npm ci,npm run dev,npm run build,npm test). - Lint, clean, build, test, and prepublish lifecycle hooks are now npm-based, both for the main project and documentation site.
- The removal of pnpm-specific script syntax (e.g.,
pnpm run lint) ensures all contributors have an identical set of tools and commands, reducing onboarding complexity.
- All top-level and documentation site scripts in
-
Removal of pnpm-specific Metadata
- All references to pnpm, including the
packageManagerdeclaration and any local workspace overrides or symlink logic unique to pnpm, have been stripped from all package metadata.
- All references to pnpm, including the
Documentation Updates
- Getting Started and Build Instructions
- The documentation (
docs/README.md) now only references npm for all install, build, development, and testing tasks, eliminating mention of pnpm commands or workflows. - All examples, code snippets, and workflow documentation are up-to-date with the npm-exclusive tooling.
- The documentation (
File & Structure Cleanup
- Repository Cleanliness
- pnpm-related lockfiles, workspace descriptors (
pnpm-lock.yaml,pnpm-workspace.yaml), and ignore entries have been purged from both the source and documentation directories. - CI/CD and build scripts are cleanly aligned; there are no redundant or fragmented package manager settings, making the project’s structure easier to reason about and more robust in standard toolchains.
- pnpm-related lockfiles, workspace descriptors (
Migration Considerations and Developer Impact
- No application code, API surface, or runtime dependencies have changed as a result of this migration. The shift is solely in development, build, and publication tooling, but this will affect every developer and automation workflow working with the repository.
- Developers and contributors must use npm (v8 or later, or as supported by the project's engines field). Using pnpm is no longer supported or tested by the project workflows, and pnpm-specific lockfiles will no longer be accepted.
- If you have local environments or CI scripts based on pnpm, update them to npm workflows as shown in the updated documentation and scripts.
Summary Table of Key Removals and Additions
| Area | Removed (pnpm) | Added/Standardized (npm) |
|---|---|---|
| Lockfiles | pnpm-lock.yaml, pnpm-workspace.yaml |
package-lock.json |
| Package manager definition | packageManager: pnpm@... |
(none, defaults to npm) |
| Scripts in package.json | pnpm run ... |
npm run ... |
| CI/CD workflows | pnpm install/build/test/publish steps | npm install/build/test/publish |
| Documentation user guides | pnpm instructions | npm instructions |
Please see the updated README and GitHub Actions workflows for concrete usage examples. All contributors, build agents, and documentation deployments should now rely exclusively on npm.