# Commander.js 15.0.0 - Product: Commander.js (https://whatsnew.fyi/product/commander) - Vendor: TJ Holowaychuk - Date: 2026-05-29 - Version: 15.0.0 - Original notes: https://www.npmjs.com/package/commander/v/15.0.0 - Permalink: https://whatsnew.fyi/product/commander/releases/15.0.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Show excess command-arguments in error message - **fixed** — Only lone `--no-*` option sets default option value to `true`, default not implicitly set when defining both positive and negative option in either order - **changed** — Migrate Commander implementation from CommonJS to ESM - **changed** — Commander 15 requires Node.js v22.12.0 or higher - **removed** — Remove deprecated export of `commander/esm.mjs` Commander 15 is ESM only. This is expected to be seamless for ESM consumers, but some CommonJS consumers may hit issues with tooling requiring configuration for ESM-only dependencies. See Migration Tips below. The release of Commander 15 moves Commander 14 into maintenance. Commander 14 will get security updates for 12 months (to May 2027). For more info see [Release Policy](./docs/release-policy.md). ###### Added - show excess command-arguments in error message ([#2384]) ###### Fixed - *Breaking:* only lone `--no-*` option sets default option value to `true`, default not implicitly set when define both positive and negative option in either order ([#2405]) - update example to use compatible character for MINGW64 ([#2475]) ###### Changed - *Breaking:* migrated Commander implementation from CommonJS to ESM ([#2464]) - *Breaking:* Commander 15 requires Node.js v22.12.0 or higher (for `require(esm)`). - dev: switch tests from Jest to `node:test` test runner ([#2463]) ###### Deleted - *Breaking:* removed deprecated export of `commander/esm.mjs` ([#2464]) ###### Migration Tips Commander 15 is ESM only, but this does not mean you need to migrate to ESM to use it. Importing ESM from CommonJS is supported by Node.js, and Bun, and Deno. Hopefully it Just Works for you! However, you may be using a different runtime or some other part of your setup that may not yet natively support importing ESM from CommonJS, such as your testing framework or bundler. If you have problems using Commander 15 in your environment, one option is stay on Commander 14 for now. Commander 14 will get security updates until May 2027 and things will hopefully improve for your setup in the meantime.