rushstack
rushstack copied to clipboard
[api-extractor] lodash.merge() counterintuitively applies `$extends` for `reportVariants` setting
Summary
Using a base configuration with long reportVariants
such as
"apiReport": {
"reportVariants": ["public", "beta"]
},
cannot be shortened in a derived config.
If the derived specifies:
"apiReport": {
"reportVariants": ["alpha"]
},
The result using loadash.merge is
"apiReport": {
"reportVariants": ["alpha", "beta"]
},
Workaround
Use array with duplicate entries to mask base config.
"reportVariants": ["alpha", "alpha"]
will produce internal "reportConfigs":
"reportConfigs": [
{
"fileName": "fluid-framework.alpha.api.md",
"variant": "alpha"
},
{
"fileName": "fluid-framework.alpha.api.md",
"variant": "alpha"
}
],
but won't fail.
Details
Problem occurs in ExtractorConfig.ts line 614:
// Merge extractorConfig into baseConfig, mutating baseConfig
lodash.merge(baseConfig, configObject);
configObject = baseConfig;
Standard questions
Please answer these questions to help us investigate your issue more quickly:
Question | Answer |
---|---|
@microsoft/api-extractor version? |
7.45.1 |
Operating system? | Windows |
API Extractor scenario? | reporting (.api.md) |
Would you consider contributing a PR? | No |
TypeScript compiler version? | 5.4.2 |
Node.js version (node -v )? |
18.20.2 |