Details
Description
When installing plugins with an exact version (no semver prefixes) and save-exact is specified either on the command line or via the global config (e.g. cordova config), cordova-lib 8.0.0 modifies package.json and config.xml with semver prefixes.
The problem is that cli.js records the option in an object with a key of "save_exact", but in src/cordova/plugin/add.js of cordova-lib, keys of the propagated options object from cli.js are copied into another fetch options object for the plugman fetch. However, save-exact is copied into the new options object by referencing the key "save-exact" instead of "save_exact", which is how it was initially stored in cli.js. Since the referenced key doesn't exist, save-exact will be undefined (i.e. false) when passed to plugman.fetch and therefore ignored.
This affects both the "--save-exact" command line flag and the save-exact attribute in the cordova global config.
The fix is to change "save-exact" to "save_exact" on lines 90 and 125 of src/cordova/plugin/add.js in cordova-lib. When I make these changes locally, save-exact works properly.