A Node.js implementation of the Unix `which` utility, used to find the first matching executable name in the `PATH` environment variable. It includes async and sync APIs, can optionally return null instead of rejecting/throwing when not found, and lets you override `PATH` and `PATHEXT` (or return all matches).
Project status
- Actively maintained, the npm/node-which updates show ongoing work in 2025-10, 2026-02, and 2026-05, and an upstream push on 2026-07-02.
- Apparent update cadence is moderately steady, roughly every 2 to 4 months in the last two quarters of 2026.
AI summary generated
Recent updates
v7.0.0
Release v7.0.0 updates the package engines to require newer Node versions, dropping older supported ranges. The code diff for this release shows mostly repository and CI template changes (from @npmcli/template-oss), including GitHub Actions upgrades and an updated test matrix.
Breakingv6.0.1
v6.0.1 primarily updates dependencies and related tooling, with no source code logic changes shown in the diff. The release notes document the bumps to isexe and several @npmcli/dev tooling packages, plus version/changelog metadata updates.
v6.0.0
v6.0.0 primarily updates the package to match the npm 11 supported Node engine range. The diff also shows multiple CI and release-automation workflow adjustments, including updated Node versions and GitHub Actions permission changes.
Breakingv5.0.0
v5.0.0 primarily updates the published Node.js engine support range for the package. The diff also includes substantial repository maintenance changes, mostly around CI workflows and lint/tooling configuration, with no obvious runtime API changes visible in the provided diff.
Breakingv4.0.0
v4.0.0 removes Node.js 14 support and updates the dependency on `isexe` to v3.1.1. The functional changes in code are primarily adapting to the `isexe` API shape and a small internal refactor of how executable file extensions are expanded.
Breakingv3.0.1
v3.0.1 is a small release that primarily fixes Windows executable extension matching by considering lowercase extensions. The release notes only mention this bug fix and a README documentation tweak.
v3.0.0
v3.0.0 introduces breaking changes to the async interface and Node.js version compatibility. The CLI behavior also changes by ignoring arguments provided after a `--` separator. Most other notes focus on adding template support and modernizing internals.
BreakingFeatures