mirror of
https://github.com/pnpm/pnpm.git
synced 2026-01-20 04:48:38 -05:00
fix(exec): add missing node-options to recursive run (#9264)
* fix(run): add missing `node-options` to `recursive` Fixes https://github.com/pnpm/pnpm/issues/9180 * refactor: share code * refactor: remove unused field
This commit is contained in:
6
.changeset/polite-plants-jump.md
Normal file
6
.changeset/polite-plants-jump.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/plugin-commands-script-runners": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Add the missing `node-options` config to `recursive run` [#9180](https://github.com/pnpm/pnpm/issues/9180).
|
||||
@@ -202,6 +202,13 @@ export async function handler (
|
||||
await runDepsStatusCheck(opts)
|
||||
}
|
||||
|
||||
if (opts.nodeOptions) {
|
||||
opts.extraEnv = {
|
||||
...opts.extraEnv,
|
||||
NODE_OPTIONS: opts.nodeOptions,
|
||||
}
|
||||
}
|
||||
|
||||
if (opts.recursive) {
|
||||
if (scriptName || Object.keys(opts.selectedProjectsGraph).length > 1) {
|
||||
return runRecursive(params, opts) as Promise<undefined>
|
||||
@@ -258,15 +265,10 @@ so you may run "pnpm -w run ${scriptName}"`,
|
||||
}
|
||||
const concurrency = opts.workspaceConcurrency ?? 4
|
||||
|
||||
const extraEnv = {
|
||||
...opts.extraEnv,
|
||||
...(opts.nodeOptions ? { NODE_OPTIONS: opts.nodeOptions } : {}),
|
||||
}
|
||||
|
||||
const lifecycleOpts: RunLifecycleHookOptions = {
|
||||
depPath: dir,
|
||||
extraBinPaths: opts.extraBinPaths,
|
||||
extraEnv,
|
||||
extraEnv: opts.extraEnv,
|
||||
pkgRoot: dir,
|
||||
rawConfig: opts.rawConfig,
|
||||
rootModulesDir: await realpathMissing(path.join(dir, 'node_modules')),
|
||||
|
||||
@@ -1061,3 +1061,27 @@ test('pnpm recursive run report summary with --bail', async () => {
|
||||
expect(executionStatus[path.resolve('project-4')].status).toBe('queued')
|
||||
expect(executionStatus[path.resolve('project-5')].status).toBe('skipped')
|
||||
})
|
||||
|
||||
test('pnpm recursive run with custom node-options', async () => {
|
||||
preparePackages([
|
||||
{
|
||||
name: 'project-1',
|
||||
version: '1.0.0',
|
||||
scripts: {
|
||||
build: 'node -e "assert.strictEqual(process.env.NODE_OPTIONS, \'--max-old-space-size=1200\')"',
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
const { allProjects, selectedProjectsGraph } = await filterPackagesFromDir(process.cwd(), [])
|
||||
|
||||
await run.handler({
|
||||
...DEFAULT_OPTS,
|
||||
allProjects,
|
||||
dir: process.cwd(),
|
||||
nodeOptions: '--max-old-space-size=1200',
|
||||
recursive: true,
|
||||
selectedProjectsGraph,
|
||||
workspaceDir: process.cwd(),
|
||||
}, ['build'])
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user