Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughReplaced Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Updates the monorepo tooling scripts to stop using pnpx/npx-style invocations and instead run commands via pnpm exec, aiming for more consistent package-manager usage across local dev and CI.
Changes:
- Replaced
pnpxwithpnpm execin root scripts (e.g.,only-allow,tsx,wait-on). - Replaced
pnpx wait-on ...withpnpm exec wait-on ...in multiple GitHub Actions workflows. - Adjusted workspace
minimumReleaseAgeconfiguration inpnpm-workspace.yaml.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
pnpm-workspace.yaml |
Changes workspace-level minimumReleaseAge configuration. |
package.json |
Switches root scripts from pnpx to pnpm exec for only-allow, tsx, and wait-on. |
packages/init-stack/package.json |
Switches init-stack test-run scaffolding commands from pnpx to pnpm exec. |
.github/workflows/e2e-custom-base-port-api-tests.yaml |
Uses pnpm exec wait-on when waiting for services. |
.github/workflows/e2e-api-tests.yaml |
Uses pnpm exec wait-on when waiting for services. |
.github/workflows/e2e-api-tests-local-emulator.yaml |
Uses pnpm exec wait-on when waiting for services. |
.github/workflows/db-migration-backwards-compatibility.yaml |
Uses pnpm exec wait-on when waiting for services. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "pre-no-codegen": "pnpm exec only-allow pnpm", | ||
| "pre-preinstall": "pnpm exec only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('pnpm exec tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"", |
There was a problem hiding this comment.
preinstall/pre-preinstall now calls pnpm exec only-allow and pnpm exec tsx. Lifecycle preinstall runs before dependencies are installed on a fresh clone, so these binaries may not exist yet and pnpm install can fail. Consider using pnpm dlx only-allow pnpm and pnpm dlx tsx ... (or keep pnpx here), or replace only-allow with a small inline Node check that doesn't depend on installed packages.
| "pre-no-codegen": "pnpm exec only-allow pnpm", | |
| "pre-preinstall": "pnpm exec only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('pnpm exec tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"", | |
| "pre-no-codegen": "pnpm dlx only-allow pnpm", | |
| "pre-preinstall": "pnpm dlx only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('pnpm dlx tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"", |
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | ||
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | ||
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | ||
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | ||
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", |
There was a problem hiding this comment.
These scripts switched from pnpx to pnpm exec sv ..., but sv is not listed as a dependency/devDependency anywhere in the repo, so pnpm exec sv will fail. If the intent is to run Svelte's generator without adding it as a dependency, use pnpm dlx sv ... (or keep pnpx).
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-js:manual": "rimraf test-run-output && pnpm dlx sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", |
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | ||
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | ||
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | ||
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
There was a problem hiding this comment.
These scripts now use pnpm exec create-next-app / pnpm exec create-vite, but those packages are not present in workspace dependencies, so the commands won't be found. Either add create-next-app and create-vite as (dev)dependencies of this package, or use pnpm dlx create-next-app@latest ... / pnpm dlx create-vite@latest ... (or keep pnpx).
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" | |
| "test-run-next:manual": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
| - '@next/swc-win32-arm64-msvc' | ||
| - '@next/swc-win32-ia32-msvc' | ||
| - '@next/swc-win32-x64-msvc' | ||
| minimumReleaseAge: 10080 |
There was a problem hiding this comment.
This PR is titled "Replace npx with pnpm exec", but this change also modifies minimumReleaseAge (and removes the previous exclude list). If this behavior change is intended, it should be called out in the PR description/title or split into a separate PR to keep the scope focused.
| - '@next/swc-win32-arm64-msvc' | ||
| - '@next/swc-win32-ia32-msvc' | ||
| - '@next/swc-win32-x64-msvc' | ||
| minimumReleaseAge: 10080 |
There was a problem hiding this comment.
Next release-age exclusions were unintentionally removed
Medium Severity
pnpm-workspace.yaml now keeps only minimumReleaseAge: 10080 and removes minimumReleaseAgeExclude. That drops prior exceptions for next and @next/swc-*, so recently published Next.js toolchain packages can be blocked for seven days during installs or lockfile refreshes.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/init-stack/package.json`:
- Around line 25-32: The scripts using pnpm exec (see package.json script names
test-run-js:manual, test-run-js, test-run-next:manual, test-run-next,
test-run-keys-next, test-run-keys-js, test-run-react, test-run-react:manual)
invoke scaffolding tools (sv, create-next-app, create-vite) that are not
installed locally; change those invocations from "pnpm exec" to "pnpm dlx" so
pnpm will download and run the tooling on-demand (replace each "pnpm exec
<tool>" with "pnpm dlx <tool>" while leaving the rest of each command
unchanged).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: bbd2f94b-3faf-4113-a7ed-0574900cd4ce
📒 Files selected for processing (7)
.github/workflows/db-migration-backwards-compatibility.yaml.github/workflows/e2e-api-tests-local-emulator.yaml.github/workflows/e2e-api-tests.yaml.github/workflows/e2e-custom-base-port-api-tests.yamlpackage.jsonpackages/init-stack/package.jsonpnpm-workspace.yaml
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | ||
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | ||
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | ||
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | ||
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | ||
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify that sv, create-next-app, and create-vite are not dependencies
echo "=== Checking packages/init-stack/package.json for scaffolding tools ==="
cat packages/init-stack/package.json | jq '.dependencies + .devDependencies | keys[]' 2>/dev/null | grep -E '(sv|create-next-app|create-vite)' || echo "Not found in init-stack"
echo ""
echo "=== Checking root package.json for scaffolding tools ==="
cat package.json | jq '.dependencies + .devDependencies | keys[]' 2>/dev/null | grep -E '(sv|create-next-app|create-vite)' || echo "Not found in root"
echo ""
echo "=== Search for these packages anywhere in the monorepo ==="
rg -l '"(sv|create-next-app|create-vite)"' --glob '*/package.json' --glob 'package.json' 2>/dev/null || echo "No matches found"Repository: stack-auth/stack-auth
Length of output: 313
🏁 Script executed:
# Check the git diff for the package.json file
cd packages/init-stack && git diff HEAD package.json | head -100Repository: stack-auth/stack-auth
Length of output: 47
🏁 Script executed:
cd packages/init-stack && git log --oneline -10 package.jsonRepository: stack-auth/stack-auth
Length of output: 100
🏁 Script executed:
cd packages/init-stack && git show HEAD:package.json | sed -n '25,32p'Repository: stack-auth/stack-auth
Length of output: 1342
🏁 Script executed:
head -35 packages/init-stack/package.json | tail -11Repository: stack-auth/stack-auth
Length of output: 2039
🏁 Script executed:
git show efaaf9d5:packages/init-stack/package.json | head -35 | tail -11Repository: stack-auth/stack-auth
Length of output: 2039
🏁 Script executed:
git show efaaf9d5^:packages/init-stack/package.json | head -35 | tail -11Repository: stack-auth/stack-auth
Length of output: 104
🏁 Script executed:
git show efaaf9d5 --statRepository: stack-auth/stack-auth
Length of output: 50378
🌐 Web query:
pnpm exec vs pnpx difference behavior uninstalled packages
💡 Result:
-
pnpm exec <cmd>: runs a command in the context of the current project by adding the project’snode_modules/.bintoPATH, so it can execute binaries from already-installed dependencies. If the binary/package isn’t installed in the project, it typically won’t be found. [1] -
pnpx <pkg-or-cmd>(deprecated) /pnpm dlx <pkg>: runs a package without adding it to your project dependencies by fetching it from the registry and running it in a temporary/hotloaded environment—so it works even when the package is not installed in your project. [2] Olderpnpxalso had behavior around installing missing packages (with prompts / yes/no flags). [3] -
Status / recommendation:
pnpxwas slated for removal; pnpm recommends usingpnpm exec(local, installed) andpnpm dlx(temporary, not installed) instead. [4]
Sources: [1] [2] [3] [4]
[1] (dimava.github.io) [2] (dimava.github.io) [3] (app.unpkg.com) [4] (newreleases.io)
Citations:
- 1: https://dimava.github.io/pnpm/cli/exec/
- 2: https://dimava.github.io/pnpm/cli/dlx/
- 3: https://app.unpkg.com/pnpm%406.7.6/files/CHANGELOG.md?utm_source=openai
- 4: https://newreleases.io/project/github/pnpm/pnpm/release/v6.13.0?utm_source=openai
Replace pnpm exec with pnpm dlx for scaffolding tools that aren't installed.
Changing from pnpx (or npx) to pnpm exec breaks these test scripts. pnpm exec only runs binaries from locally installed packages, but sv, create-next-app, and create-vite are not dependencies of this package or the monorepo root. These are scaffolding tools meant to be downloaded on-demand.
pnpm dlx is pnpm's replacement for npx—it downloads and runs packages temporarily without requiring installation. Use it for these commands:
Recommended fix
- "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output",
- "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser",
- "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output",
- "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser",
- "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key",
- "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key",
- "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm",
- "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react"
+ "test-run-js:manual": "rimraf test-run-output && pnpm dlx sv create test-run-output --no-install && pnpm run init-stack:local test-run-output",
+ "test-run-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser",
+ "test-run-next:manual": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output && pnpm run init-stack:local test-run-output",
+ "test-run-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser",
+ "test-run-keys-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key",
+ "test-run-keys-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key",
+ "test-run-react": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm",
+ "test-run-react:manual": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" | |
| "test-run-js:manual": "rimraf test-run-output && pnpm dlx sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@packages/init-stack/package.json` around lines 25 - 32, The scripts using
pnpm exec (see package.json script names test-run-js:manual, test-run-js,
test-run-next:manual, test-run-next, test-run-keys-next, test-run-keys-js,
test-run-react, test-run-react:manual) invoke scaffolding tools (sv,
create-next-app, create-vite) that are not installed locally; change those
invocations from "pnpm exec" to "pnpm dlx" so pnpm will download and run the
tooling on-demand (replace each "pnpm exec <tool>" with "pnpm dlx <tool>" while
leaving the rest of each command unchanged).
Greptile SummaryThis PR replaces all uses of The substitution is correct for packages that are installed as workspace dependencies ( Key changes:
Confidence Score: 4/5Not safe to merge as-is: the init-stack test-run scripts for Next.js, SvelteKit, and Vite are broken by the incorrect One clear P1 defect —
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["pnpx / pnpm dlx"] -->|"Downloads & runs\nfrom registry\n(no install needed)"| B["✅ Works for\nnon-installed packages\ncreate-next-app, sv, create-vite"]
C["pnpm exec"] -->|"Looks up binary\nin node_modules/.bin"| D{Package installed?}
D -->|"Yes"| E["✅ Runs binary\n(wait-on, only-allow, tsx)"]
D -->|"No"| F["❌ Command not found\n(sv, create-next-app, create-vite)"]
subgraph "Root workspace devDeps / deps"
G["wait-on ✅"]
H["only-allow ✅"]
I["tsx ✅"]
end
subgraph "NOT in any workspace deps"
J["sv ❌"]
K["create-next-app ❌"]
L["create-vite ❌"]
end
Reviews (1): Last reviewed commit: "Replace npx with pnpm exec" | Re-trigger Greptile |
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | ||
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | ||
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | ||
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | ||
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | ||
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | ||
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
There was a problem hiding this comment.
pnpm exec cannot locate uninstalled scaffold tools
pnpm exec only runs binaries that are already present in node_modules/.bin. The tools sv (SvelteKit CLI), create-next-app, and create-vite are not listed as dependencies anywhere in the workspace (neither in this package's devDependencies nor in the root package.json). Calling pnpm exec sv create, pnpm exec create-next-app, and pnpm exec create-vite will therefore fail with a "command not found" error for anyone running these test scripts.
The original pnpx <pkg> (alias for pnpm dlx) was correct here because it fetches and executes packages from the registry without requiring them to be installed locally. These scaffold tools are one-off CLI tools and are intentionally kept out of the dependency tree.
Affected scripts: test-run-js:manual, test-run-js, test-run-next:manual, test-run-next, test-run-keys-next, test-run-keys-js, test-run-react, test-run-react:manual.
The fix is to replace pnpm exec with pnpm dlx (and restore the @latest version tags for create-next-app and create-vite):
| "test-run-js:manual": "rimraf test-run-output && pnpm exec sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm exec create-next-app test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm exec create-next-app test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm exec sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm exec create-vite test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" | |
| "test-run-js:manual": "rimraf test-run-output && pnpm dlx sv create test-run-output --no-install && pnpm run init-stack:local test-run-output", | |
| "test-run-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --no-browser", | |
| "test-run-next:manual": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output && pnpm run init-stack:local test-run-output", | |
| "test-run-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser", | |
| "test-run-keys-next": "rimraf test-run-output && pnpm dlx create-next-app@latest test-run-output --app --ts --no-src-dir --tailwind --use-npm --eslint --import-alias '##@#/*' --turbopack && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-keys-js": "rimraf test-run-output && pnpm dlx sv create test-run-output --template minimal --types ts --no-add-ons --no-install && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --js --client --npm --project-id my-project-id --publishable-client-key my-publishable-client-key", | |
| "test-run-react": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --on-question error --no-warn-uncommitted-changes --no-browser --npm", | |
| "test-run-react:manual": "rimraf test-run-output && pnpm dlx create-vite@latest test-run-output --template react-ts && pnpm run init-stack:local test-run-output --react" |
|
Deployment failed with the following error: |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2e0180c. Configure here.
| "pre-no-codegen": "pnpx only-allow pnpm", | ||
| "pre-preinstall": "pnpx only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('pnpx --package=tsx tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"", | ||
| "pre-no-codegen": "pnpm exec only-allow pnpm", | ||
| "pre-preinstall": "pnpx only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('pnpm exec tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"", |
There was a problem hiding this comment.
pnpm exec tsx fails during preinstall on fresh installs
High Severity
The pre-preinstall script (which runs as the preinstall hook) changed from pnpx --package=tsx tsx to pnpm exec tsx. Unlike pnpx, pnpm exec only runs binaries already installed in node_modules/.bin/ — it does not download packages on-the-fly. During preinstall, no dependencies are installed yet, so pnpm exec tsx will fail on any fresh clone, after pnpm clean, or in CI without a cached node_modules. The STACK_SKIP_TEMPLATE_GENERATION guard only covers Docker builds, not developer or CI workflows.
Reviewed by Cursor Bugbot for commit 2e0180c. Configure here.


Note
Low Risk
Low risk: changes are limited to CI/dev tooling command invocations and workspace release timing; main risk is CI failures if
pnpm execresolution differs frompnpx.Overview
Standardizes command execution across CI and local scripts by replacing
pnpxusage withpnpm execin GitHub workflows (service readinesswait-on) and root/package scripts (e.g.,wait-on, SDK generation, andinit-stackscaffolding test runs).Updates tooling dependencies to match the new invocation style (adds
create-next-app,create-vite,sv, andonly-allowtopackages/init-stackdevDeps; adjusts lockfile), and changespnpm-workspace.yamlrelease gating by removing the exclusion list and increasingminimumReleaseAgeto10080.Reviewed by Cursor Bugbot for commit edfff3b. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit