Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jul 22, 2024

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
execa ^5.1.1^9.0.0 age confidence

Release Notes

sindresorhus/execa (execa)

v9.6.1

Compare Source


v9.6.0

Compare Source


v9.5.3

Compare Source


v9.5.2

Compare Source

Bug fixes

v9.5.1

Compare Source

Bug fixes

v9.5.0

Compare Source

Features
await execa({stdout: {file: 'output.txt', append: true}})`npm run build`;

v9.4.1

Compare Source

Bug fixes

v9.4.0

Compare Source

Features

  • We've created a separate package called nano-spawn. It is similar to Execa but with fewer features, for a much smaller package size. More info.

Bug fixes

Documentation

v9.3.1

Compare Source

Thanks @​holic and @​jimhigson for your contributions!

Bugs

Bugs (types)

  • Fix type of the env option. It was currently failing for Remix or Next.js users. (by @​holic) (#​1141)

Documentation

v9.3.0

Compare Source

Features

v9.2.0

Compare Source

This release includes a new set of methods to exchange messages between the current process and a Node.js subprocess, also known as "IPC". This allows passing and returning almost any message type to/from a Node.js subprocess. Also, debugging IPC is now much easier.

Moreover, a new gracefulCancel option has also been added to terminate a subprocess gracefully.

For a deeper dive-in, please check and share the release post!

Thanks @​iiroj for your contribution, @​SimonSiefke and @​adymorz for reporting the bugs fixed in this release, and @​karlhorky for improving the documentation!

Deprecations
  • Passing 'ipc' to the stdio option has been deprecated. It will be removed in the next major release. Instead, the ipc: true option should be used. (#​1056)
- await execa('npm', ['run', 'build'], {stdio: ['pipe', 'pipe', 'pipe', 'ipc']});
+ await execa('npm', ['run', 'build'], {ipc: true});
- import {execaCommand} from 'execa';
+ import {execa} from 'execa';

- await execaCommand('npm run build');
+ await execa`npm run build`;

const taskName = 'build';
- await execaCommand(`npm run ${taskName}`);
+ await execa`npm run ${taskName}`;

const commandArguments = ['run', 'task with space'];
await execa`npm ${commandArguments}`;

If the file and/or multiple arguments are supplied as a single string, parseCommandString(command) can split that string into an array. More info. (#​1054)

- import {execaCommand} from 'execa';
+ import {execa, parseCommandString} from 'execa';

const commandString = 'npm run task';
- await execaCommand(commandString);
+ const commandArray = parseCommandString(commandString); // ['npm', 'run', 'task']
+ await execa`${commandArray}`;

// Or alternatively:
const [file, ...commandArguments] = commandArray;
await execa(file, commandArguments);
Features
Types
Bug fixes

v9.1.0

Compare Source

Features (types)

v9.0.2

Compare Source

Bug fixes (types)

v9.0.1

Compare Source

Bug fixes (types)

v9.0.0

Compare Source

This major release brings many important features including:

Please check the release post for a high-level overview! For the full list of breaking changes, features and bug fixes, please read below.

Thanks @​younggglcy, @​koshic, @​am0o0 and @​codesmith-emmy for your help!


One of the maintainers @​ehmicky is looking for a remote full-time position. Specialized in Node.js back-ends and CLIs, he led Netlify Build, Plugins and Configuration for 2.5 years. Feel free to contact him on his website or on LinkedIn!


Breaking changes (not types)

const {stdout} = await execa('node', ['file.js'], {encoding: 'buffer'});
console.log(stdout); // This is now an Uint8Array
- await execa('node', ['file.js'], {encoding: null});
+ await execa('node', ['file.js'], {encoding: 'buffer'});

- await execa('node', ['file.js'], {encoding: 'utf-8'});
+ await execa('node', ['file.js'], {encoding: 'utf8'});

- await execa('node', ['file.js'], {encoding: 'UTF8'});
+ await execa('node', ['file.js'], {encoding: 'utf8'});

- await execa('node', ['file.js'], {encoding: 'utf-16le'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'ucs2'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'ucs-2'});
+ await execa('node', ['file.js'], {encoding: 'utf16le'});

- await execa('node', ['file.js'], {encoding: 'binary'});
+ await execa('node', ['file.js'], {encoding: 'latin1'});
  • Passing a file path to subprocess.pipeStdout(), subprocess.pipeStderr() and subprocess.pipeAll() has been removed. Instead, a {file: './path'} object should be passed to the stdout or stderr option. (#​752)
- await execa('node', ['file.js']).pipeStdout('output.txt');
+ await execa('node', ['file.js'], {stdout: {file: 'output.txt'}});

- await execa('node', ['file.js']).pipeStderr('output.txt');
+ await execa('node', ['file.js'], {stderr: {file: 'output.txt'}});

- await execa('node', ['file.js']).pipeAll('output.txt');
+ await execa('node', ['file.js'], {
+	stdout: {file: 'output.txt'},
+	stderr: {file: 'output.txt'},
+});
- await execa('node', ['file.js']).pipeStdout(stream);
+ await execa('node', ['file.js'], {stdout: ['pipe', stream]});

- await execa('node', ['file.js']).pipeStderr(stream);
+ await execa('node', ['file.js'], {stderr: ['pipe', stream]});

- await execa('node', ['file.js']).pipeAll(stream);
+ await execa('node', ['file.js'], {
+	stdout: ['pipe', stream],
+	stderr: ['pipe', stream],
+});
  • The subprocess.pipeStdout(), subprocess.pipeStderr() and subprocess.pipeAll() methods have been renamed to subprocess.pipe(). The command and its arguments can be passed to subprocess.pipe() directly, without calling execa() a second time. The from piping option can specify 'stdout' (the default value), 'stderr' or 'all'. (#​757)
- await execa('node', ['file.js']).pipeStdout(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js']);

- await execa('node', ['file.js']).pipeStderr(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'stderr'});

- await execa('node', ['file.js']).pipeAll(execa('node', ['other.js']));
+ await execa('node', ['file.js']).pipe('node', ['other.js'], {from: 'all'});
- await execa('node', ['file.js'], {signal: abortController.signal});
+ await execa('node', ['file.js'], {cancelSignal: abortController.signal});
try {
	await execa('node', ['file.js']);
} catch (error) {
- if (error.killed) {
+ if (error.isTerminated) {
		// ...
	}
}
- subprocess.cancel();
+ subprocess.kill();
- const subprocess = execa('node', ['file.js']);
- subprocess.kill('SIGTERM', {forceKillAfterTimeout: 1000});
+ const subprocess = execa('node', ['file.js'], {forceKillAfterDelay: 1000});
+ subprocess.kill('SIGTERM');
  • The verbose option is now a string enum instead of a boolean. false has been renamed to 'none' and true has been renamed to 'short'. (#​884)
- await execa('node', ['file.js'], {verbose: false});
+ await execa('node', ['file.js'], {verbose: 'none'});

- await execa('node', ['file.js'], {verbose: true});
+ await execa('node', ['file.js'], {verbose: 'short'});
- await execa('node', ['file.js'], {execPath: './path/to/node'});
+ await execa('node', ['file.js'], {nodePath: './path/to/node'});
- subprocess.send({example: true, getExample() {}});
+ subprocess.send({example: true});
const subprocess = execa('node', ['file.js']);
- setTimeout(() => {
	subprocess.stdout.pipe(process.stdout);
- }, 0);
- const subprocess = execa('node', ['file.js'], {killSignal: 'sigterm'});
+ const subprocess = execa('node', ['file.js'], {killSignal: 'SIGTERM'});

- subprocess.kill('sigterm');
+ subprocess.kill('SIGTERM');

Features

Execution
Text lines
Piping multiple subprocesses
Input/output
Streams
Verbose mode
Debugging
Errors
Termination
Node.js files
Synchronous execution
Inter-process communication
Input validation

Bug fixes

Breaking changes (types)

import type {Options} from 'execa';

- const options: CommonOptions = {timeout: 1000};
+ const options: Options = {timeout: 1000};
import type {Options} from 'execa';

- const options: NodeOptions = {nodeOptions: ['--no-warnings']};
+ const options: Options = {nodeOptions: ['--no-warnings']};
import type {Options} from 'execa';

- const options: KillOptions = {forceKillAfterTimeout: 1000};
+ const options: Options = {forceKillAfterDelay: 1000};
import type {Options} from 'execa';

- const options: Options<'utf8'> = {encoding: 'utf8'};
+ const options: Options = {encoding: 'utf8'};
import type {ResultPromise, Result} from 'execa';

- const promiseOrSubprocess: ExecaChildProcess = execa('node', ['file.js']);
+ const promiseOrSubprocess: Re

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 7am on Tuesday,before 7am on Wednesday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/keystonejs/keystone).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzguMCIsInVwZGF0ZWRJblZlciI6IjQyLjY2LjE0IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

@codesandbox-ci
Copy link

codesandbox-ci bot commented Jul 22, 2024

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit 3a11aeb:

Sandbox Source
@keystone-6/sandbox Configuration

@renovate renovate bot force-pushed the renovate/execa-9.x branch 2 times, most recently from b3b4ce3 to 68dfab4 Compare August 12, 2024 14:29
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 68dfab4 to 94f5b96 Compare September 2, 2024 14:35
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 94f5b96 to 784d3c3 Compare October 15, 2024 13:46
@dcousens dcousens added dependencies Related to our dependencies blocked labels Oct 15, 2024
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 784d3c3 to 3a11aeb Compare November 4, 2024 14:21
@renovate renovate bot changed the title fix(deps): update dependency execa to v9 fix(deps): update dependency execa to v9 - autoclosed Dec 8, 2024
@renovate renovate bot closed this Dec 8, 2024
@renovate renovate bot deleted the renovate/execa-9.x branch December 8, 2024 18:41
@renovate renovate bot changed the title fix(deps): update dependency execa to v9 - autoclosed fix(deps): update dependency execa to v9 Dec 10, 2024
@renovate renovate bot reopened this Dec 10, 2024
@renovate renovate bot force-pushed the renovate/execa-9.x branch 2 times, most recently from 3a11aeb to cce3f93 Compare December 16, 2024 13:16
@renovate renovate bot force-pushed the renovate/execa-9.x branch from cce3f93 to 8d33dee Compare February 3, 2025 13:08
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 8d33dee to 728c640 Compare February 11, 2025 19:06
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 728c640 to afdad1a Compare July 28, 2025 19:49
@renovate renovate bot force-pushed the renovate/execa-9.x branch from afdad1a to ade2ceb Compare August 11, 2025 16:45
@renovate renovate bot force-pushed the renovate/execa-9.x branch 2 times, most recently from a8042f2 to bc0a78a Compare August 25, 2025 18:29
@renovate renovate bot force-pushed the renovate/execa-9.x branch 2 times, most recently from d29f017 to 76882cd Compare September 2, 2025 16:55
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 76882cd to 8273414 Compare September 29, 2025 16:47
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 8273414 to 67bd246 Compare October 27, 2025 15:20
@socket-security
Copy link

socket-security bot commented Oct 27, 2025

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@renovate renovate bot force-pushed the renovate/execa-9.x branch from 67bd246 to a293b01 Compare October 28, 2025 18:20
@renovate renovate bot force-pushed the renovate/execa-9.x branch from a293b01 to 3989e59 Compare November 10, 2025 16:48
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 3989e59 to d9753ce Compare November 24, 2025 13:56
@renovate renovate bot force-pushed the renovate/execa-9.x branch from d9753ce to 0062a61 Compare November 26, 2025 22:41
@socket-security
Copy link

socket-security bot commented Nov 26, 2025

@renovate renovate bot force-pushed the renovate/execa-9.x branch from 0062a61 to a81073a Compare December 1, 2025 16:37
@renovate renovate bot force-pushed the renovate/execa-9.x branch from a81073a to 4736f38 Compare December 22, 2025 17:10
@renovate renovate bot force-pushed the renovate/execa-9.x branch from 4736f38 to 7de784a Compare January 5, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked dependencies Related to our dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants