Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented May 29, 2024

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
@types/jest (source) ^29.2.3^30.0.0 age confidence devDependencies major
@types/node (source) ^18.11.9^24.0.0 age confidence devDependencies major
cross-env ^7.0.3^10.0.0 age confidence devDependencies major
duct 0.13.71.0.0 age confidence dev-dependencies major
execa 7.2.09.6.1 age confidence devDependencies major
jest (source) ^29.3.1^30.0.0 age confidence devDependencies major
p-retry ^6.2.0^7.0.0 age confidence devDependencies major
which ^3.0.1^6.0.0 age confidence devDependencies major
zod (source) ^3.19.1^4.0.0 age confidence devDependencies major

Release Notes

kentcdodds/cross-env (cross-env)

v10.1.0

Compare Source

Features
  • add support for default value syntax (152ae6a)

For example:

"dev:server": "cross-env wrangler dev --port ${PORT:-8787}",

If PORT is already set, use that value, otherwise fallback to 8787.

Learn more about Shell Parameter Expansion

v10.0.0

Compare Source

TL;DR: You should probably not have to change anything if:

  • You're using a modern maintained version of Node.js (v20+ is tested)
  • You're only using the CLI (most of you are as that's the intended purpose)

In this release (which should have been v8 except I had some issues with automated releases 🙈), I've updated all the things and modernized the package. This happened in #​261

Was this needed? Not really, but I just thought it'd be fun to modernize this package.

Here's the highlights of what was done.

  • Replace Jest with Vitest for testing
  • Convert all source files from .js to .ts with proper TypeScript types
  • Use zshy for ESM-only builds (removes CJS support)
  • Adopt @​epic-web/config for TypeScript, ESLint, and Prettier
  • Update to Node.js >=20 requirement
  • Remove kcd-scripts dependency
  • Add comprehensive e2e tests with GitHub Actions matrix testing
  • Update GitHub workflow with caching and cross-platform testing
  • Modernize documentation and remove outdated sections
  • Update all dependencies to latest versions
  • Add proper TypeScript declarations and exports

The tool maintains its original functionality while being completely modernized with the latest tooling and best practices

BREAKING CHANGES
  • This is a major rewrite that changes the module format from CommonJS to ESM-only. The package now requires Node.js >=20 and only exports ESM modules (not relevant in most cases).
oconnor663/duct.rs (duct)

v1.1.1

Compare Source

v1.1.0

Compare Source

v1.0.0

Compare Source

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


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@vercel
Copy link

vercel bot commented May 29, 2024

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
fnm Ready Ready Preview, Comment Jan 23, 2026 5:07pm

@renovate renovate bot added the PR: Dependency Update A dependency was updated label May 29, 2024
@renovate renovate bot enabled auto-merge (squash) May 29, 2024 11:54
@changeset-bot
Copy link

changeset-bot bot commented May 29, 2024

⚠️ No Changeset found

Latest commit: 275b75c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from b3606fb to 7081004 Compare May 29, 2024 11:58
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 7081004 to d774b09 Compare May 29, 2024 11:58
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from d774b09 to bce1a5d Compare May 29, 2024 11:59
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from bce1a5d to 1126ce1 Compare May 29, 2024 14:56
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 1126ce1 to 9168948 Compare May 29, 2024 15:10
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 9168948 to c2c8590 Compare May 29, 2024 15:27
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from c2c8590 to 7d0d87d Compare May 29, 2024 16:04
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 7d0d87d to dbe15c9 Compare May 29, 2024 16:45
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from dbe15c9 to 7a81ece Compare May 29, 2024 16:49
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 7a81ece to 6d55414 Compare May 30, 2024 03:41
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 6d55414 to 7a956ae Compare June 1, 2024 22:18
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 7a956ae to df008e2 Compare June 4, 2024 07:13
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from df008e2 to f825e11 Compare June 4, 2024 07:16
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from dee7156 to 4af9ce9 Compare December 16, 2025 02:56
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 4af9ce9 to 6836410 Compare December 31, 2025 06:00
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 6836410 to d6e8de0 Compare December 31, 2025 20:02
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from d6e8de0 to 601a136 Compare January 1, 2026 07:04
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 601a136 to faa5efb Compare January 4, 2026 09:54
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from faa5efb to 8ec2839 Compare January 8, 2026 18:16
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 8ec2839 to c0424b4 Compare January 10, 2026 01:16
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from c0424b4 to 481a58a Compare January 10, 2026 04:24
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 481a58a to 1581da9 Compare January 10, 2026 17:52
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 1581da9 to a4165ff Compare January 13, 2026 17:44
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from a4165ff to 1a76d54 Compare January 15, 2026 18:14
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 1a76d54 to 1223522 Compare January 19, 2026 19:48
@renovate renovate bot force-pushed the renovate/major-all-dev-dependencies branch from 1223522 to 82becca Compare January 22, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Dependency Update A dependency was updated

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant