chore: switch from npm to pnpm as package manager#520
chore: switch from npm to pnpm as package manager#520devin-ai-integration[bot] wants to merge 52 commits into
Conversation
- Replace npm with pnpm as the package manager - Convert package-lock.json to pnpm-lock.yaml via pnpm import - Add pnpm-workspace.yaml with trustPolicy, engineStrict, minimumReleaseAge - Set packageManager to pnpm@11.1.2 with SHA - Add engines.node >=24.0.0 and engines.pnpm >=11.0.0 - Replace lerna scripts with pnpm workspace equivalents - Remove lerna, @lerna/publish, install, npm devDependencies - Remove lerna.json - Update all CI workflows to use pnpm ci + Node 24 - Update sub-package scripts from npm run to pnpm run - Update CONTRIBUTING.md for pnpm usage
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
The relative paths ../../node_modules/ assumed npm's hoisted flat structure. With pnpm, these packages are in the local package's node_modules/ directory. Co-Authored-By: nicholi <nicholas.schell@dolby.com>
pnpm's strict node_modules prevents puppeteer's postinstall from being found by jest-environment-puppeteer. Add an explicit install step to ensure Chrome is available for unit and e2e tests. Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Puppeteer's postinstall creates the cache folder but fails to extract the Chrome binary on CI. Skip the automatic download during pnpm ci and use the explicit puppeteer browsers install step instead. Co-Authored-By: nicholi <nicholas.schell@dolby.com>
pnpm --filter exec doesn't properly run the puppeteer CLI. Use npx with working-directory set to the millicast-sdk package instead. Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
Co-Authored-By: nicholi <nicholas.schell@dolby.com>
and also dryrun workflow targeted at millicast-sdk
publishing to npmjs with trusted publisher
allow being called manually through workflow_dispatch
always specify shell: bash (because we are using ubuntu container here) some cosmetic whitespace between steps use pnpm exec for eslint
always specify shell: bash (because we are using ubuntu container here) some cosmetic whitespace between steps
add node-gyp devDependency for millicast-sdk
copy README for publish too
we can enforce signatures in github repo
should quickly update these to versions with provenance in newer packages
TODOhow to incorporate changesets into Probably understand this fully and merge first. |
add environment section to job drop new-release (now everything moved to node-release)
Summary
Migrates the millicast-sdk monorepo from npm + Lerna to pnpm workspaces, following the same patterns used across 18 other millicast/CoSMoSoftware repositories.
Changes:
package-lock.jsonwithpnpm-lock.yaml(imported viapnpm import)trustPolicy: no-downgrade,engineStrict: true,minimumReleaseAge: 10080,allowBuildsfor native packages)packageManagertopnpm@11.1.2with SHA matching all other reposengines.node: ">=24.0.0"andengines.pnpm: ">=11.0.0"lerna runscripts withpnpm -r run/pnpm --filterequivalentslerna,@lerna/publish,install,npmfrom devDependenciescheck-tests.yml,new-release.yml,rc-release.yml): Updated to useactions/setup-nodewith Node 24,corepack enable, andpnpm ciPUPPETEER_SKIP_DOWNLOAD=truefor unit-test/e2e-test jobs + explicitnpx puppeteer browsers install chromestep (pnpm's strict node_modules causes puppeteer's postinstall to create a corrupt cache)../../node_modules/tonode_modules/(pnpm doesn't hoist to root)npm run→pnpm runinpackages/millicast-sdk/package.jsonCI Status:
Review & Testing Checklist for Human
pnpm publishcommands innew-release.ymlandrc-release.ymlwork correctly with--no-git-checksflagPUBLISHER_DEMO_ACC_ID/PUBLISHER_DEMO_TOKEN) are still valid — all 4 e2e failures areUnauthorized: Account disabledcorepack enable,pnpm ci,pnpm run build,pnpm run startNotes
codeql-analysis.ymlworkflow was not modified since it uses GitHub'sautobuildaction which auto-detects the build systemnpx→pnpm dlxtranslation fails). Upgrading to husky v9+ would resolve it but is out of scope for this migrationnx.jsonwas kept since it doesn't depend on lerna and may be useful for build cachingLink to Devin session: https://dolby.devinenterprise.com/sessions/9b9e1c01e1b3454a96e298bf03675273
Requested by: @nicholi