chore: replace pnpm, node --run, and vite-node with nub - #1919
Conversation
- package.json scripts: node --run -> nub run, vite-node -> nub, pnpm run/exec -> nub run/nub exec with --filter and explicit globs - drop vite-node devDependency and the pnpm packageManager pin - workflows: swap pnpm/action-setup for nubjs/setup-nub, use nub install/run/publish/pack throughout CI - nx.json: set cli.packageManager to npm since nx run-script shells out through the detected package manager - regenerate pnpm-lock.yaml via nub install
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub. |
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR migrates the repo’s script execution, workspace filtering, and CI workflows from pnpm, node --run, and vite-node to nub, aiming to standardize local/CI commands and remove the vite-node dependency.
Changes:
- Updated root/package-level scripts (including publish flows) to use
nub run,nub exec, and directnub ./scripts/*.tsexecution. - Swapped GitHub Actions workflows from
pnpm/action-setuptonubjs/setup-nuband replaced install/run steps withnub. - Adjusted Nx CLI package manager setting and updated docs/checklists to reflect
nubcommands.
Reviewed changes
Copilot reviewed 28 out of 29 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/90-scaffold-rule.ts | Updates scaffold instructions/output to reference nub usage. |
| package.json | Replaces root scripts with nub equivalents and removes vite-node devDependency / pnpm pin. |
| nx.json | Sets Nx CLI package manager to npm to keep Nx script execution working with nub-installed deps. |
| docs/rule-rename-checklist.md | Updates checklist commands from pnpm to nub (exec / install --filter). |
| docs/rule-feature-system.md | Updates documentation references from node --run to nub run. |
| .pkgs/testkit/package.json | Updates publish script to use nub run. |
| .pkgs/samples/package.json | Updates publish script to use nub run. |
| .pkgs/eff/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-x/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-web-api/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-rsc/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-naming-convention/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-jsx/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-dom/package.json | Updates publish script to use nub run. |
| plugins/eslint-plugin-react-debug/package.json | Updates publish script to use nub run. |
| packages/var/package.json | Updates publish script to use nub run. |
| packages/shared/package.json | Updates publish script to use nub run. |
| packages/kit/package.json | Updates publish script to use nub run. |
| packages/jsx/package.json | Updates publish script to use nub run. |
| packages/eslint/package.json | Updates publish script to use nub run. |
| packages/core/package.json | Updates publish script to use nub run. |
| packages/ast/package.json | Updates publish script to use nub run. |
| .github/workflows/test.yml | Migrates CI test workflow to nub install / nub run. |
| .github/workflows/check.yml | Migrates CI check workflow to nub install / nub run. |
| .github/workflows/release.yml | Migrates release workflow to nub and updates pack step. |
| .github/workflows/publish.yml | Migrates publish workflow to nub and updates publish invocation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "lint:website": "nub run --filter \"./apps/website\" lint", | ||
| "prepare": "nub run update:all && nub run build", | ||
| "scaffold:rule": "nub ./scripts/90-scaffold-rule.ts", | ||
| "sort:package-json": "nub exec sort-package-json -q \".pkgs/*/package.json\" \"apps/*/package.json\" \"packages/*/package.json\" \"plugins/*/package.json\" \"examples/*/package.json\" && dprint fmt", |
| - name: Setup nub | ||
| uses: nubjs/setup-nub@v0 |
| - name: Setup nub | ||
| uses: nubjs/setup-nub@v0 |
| - name: Setup nub | ||
| uses: nubjs/setup-nub@v0 |
| - name: Setup nub | ||
| uses: nubjs/setup-nub@v0 |
| if git log -1 --pretty=%B | grep "^release: [0-9]\+\.[0-9]\+\.[0-9]\+$"; | ||
| then | ||
| pnpm --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public | ||
| nub --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public |
| elif git log -1 --pretty=%B | grep "^release: [0-9]\+\.[0-9]\+\.[0-9]\+-rc\.[0-9]\+$"; | ||
| then | ||
| pnpm --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public --tag rc --no-git-checks | ||
| nub --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public --tag rc --no-git-checks |
| elif git log -1 --pretty=%B | grep "^release: [0-9]\+\.[0-9]\+\.[0-9]\+-beta\.[0-9]\+$"; | ||
| then | ||
| pnpm --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public --tag beta --no-git-checks | ||
| nub --filter "./packages/*" --filter "./plugins/*" publish --provenance --access public --tag beta --no-git-checks |
4d61ad0 to
0854758
Compare
0854758 to
bb81913
Compare
The nub-based install/run/publish flow from #1919 is rolled back: CI workflows use pnpm/action-setup and node --run again, package.json restores "packageManager": "pnpm" and the pnpm/node --run scripts, nx.json drops the npm cli override, and apps/website/vercel.json now uses pnpm for install and build on Vercel. @nubjs/nub stays as a devDependency but only runs scripts/*.ts, replacing vite-node (nub resolves tsconfig.json#paths natively, so the -c vitest.config.ts flag is no longer needed). Also bumps typescript-eslint to 8.65, tsdown to 0.22.12, eslint-plugin-jsdoc to 63.2, import-integrity-lint to 1.2 and postcss to 8.5.20 across the workspace.
The nub-based install/run/publish flow from #1919 is rolled back: CI workflows use pnpm/action-setup and node --run again, package.json restores "packageManager": "pnpm" and the pnpm/node --run scripts, nx.json drops the npm cli override, and apps/website/vercel.json now uses pnpm for install and build on Vercel. @nubjs/nub stays as a devDependency but only runs scripts/*.ts, replacing vite-node (nub resolves tsconfig.json#paths natively, so the -c vitest.config.ts flag is no longer needed). Also bumps typescript-eslint to 8.65, tsdown to 0.22.12, eslint-plugin-jsdoc to 63.2, import-integrity-lint to 1.2 and postcss to 8.5.20 across the workspace.
@nubjs/nub stays as a devDependency but only runs scripts/*.ts, replacing vite-node (nub resolves tsconfig.json#paths natively, so the -c vitest.config.ts flag is no longer needed). Also bumps typescript-eslint to 8.65, tsdown to 0.22.12, eslint-plugin-jsdoc to 63.2, import-integrity-lint to 1.2 and postcss to 8.5.20 across the workspace.
Update "[ ]" to "[x]" to check a box
What kind of change does this PR introduce?
Check at least one. If you are introducing a new binding, you must reference an issue where this binding has been proposed, discussed and approved by the maintainers.
Does this PR introduce a breaking change?
If yes, please describe the impact and migration path for existing applications in an attached issue.
Checklist
fix: remove a typo, closes #___, #___)Other information
Replace
pnpm,node --run, andvite-nodewith nub across the repo:node --run X→nub run X;vite-node ./scripts/*.ts→nub ./scripts/*.ts(nub runs TS natively and resolves the repo's#/tsconfig path aliases, so-c vitest.config.tsis no longer needed);pnpm -F ... run/pnpm m -F ... run→nub run --filter ...;pnpm m exec sort-package-json→nub exec sort-package-jsonwith explicit workspace globs.vite-nodedevDependency and the"packageManager": "pnpm@..."pin;pnpm-lock.yamlregenerated vianub install(stilllockfileVersion: 9.0, nub round-trips the pnpm format — the diff is mostly nub's key ordering and peer-suffix style).pnpm/action-setupfornubjs/setup-nub@v0; usenub install --frozen-lockfile,nub run,nub publish, andnub packthroughout CI.actions/setup-nodeis kept for the Node 22/24/26 test matrix — nub adopts the PATH Node sinceengines.nodeis a range."cli": { "packageManager": "npm" }. nx'srun-scriptexecutor shells package scripts out through the detected package manager (pnpm run <script>), and nx only supports npm/yarn/pnpm/bun; npm ships with Node and does not verify the install layout, so it works with nub-installednode_modules.pnpm-lock.yamlandpnpm-workspace.yamlare kept on purpose: nub infers the pnpm incumbent from them and reads/writes the pnpm format. Historical changelogs and release notes are untouched.Verified locally with nub v0.4.13:
nub install,nub run build,format:check,check:rules,lint:es(0 errors),lint:text,lint:ts,lint:publish,lint:examples,sort:package-json(no diff),update:all(no diff), and the full test suite (116 files, 4303 tests passed).