Current Behavior -
If we define an option whose name contains no- for e.g. module-no-parse, it makes the option true by default.
Expected Behavior -
It is supposed to do this only for flags with leading no- as mentioned in docs. https://github.com/tj/commander.js/#other-option-types-negatable-boolean-and-flagvalue
You can specify a boolean option long name with a leading no- to set the option value to false when used. Defined alone this also makes the option true by default.
Steps to reproduce -
Define an option whose name includes no- e.g. module-no-parse.
Check its default value in the parser.

Addition Info
Bug found via https://github.com/webpack/webpack-cli/issues/1679
I think the bug is here -
https://github.com/tj/commander.js/blob/64053252cbd5b5434afb7ec3f12c46ad2a352d8a/index.js#L26
it should be this.negate = flags.indexOf('--no-') !== -1;
Reproduced.
I did a bit of digging to see how the code has evolved. Back in Commander v2.3.0, the -no- support was undocumented and simplistic, and looked for the -no- anywhere in the long option flag. The handling of no- got a big rework in #795 and (mostly) switched to --no- being just at the start of the option flag. The initial test didn't get changed though, and hence the current bug!
Fixed in Commander v6.0.0 which has been released: https://github.com/tj/commander.js/releases/tag/v6.0.0