Throw a clear error when a callback is passed as the first argument of configureImageRule()/configureFontRule() - #1519
Conversation
98cf44b to
1e0cb73
Compare
|
Hi, and thanks for opening this PR! I just merged #1521, and with TypeScript types definitions, I'm not sure this kind of PR are still needed (same for existing type validation at runtime). WDYT? |
|
Thanks! I'd say this one is still useful: types only help people whose editor type-checks their |
1e0cb73 to
296d382
Compare
…f configureImageRule()/configureFontRule() Co-authored-by: Hugo Alliaume <hugo@alliau.me>
296d382 to
bb4fea1
Compare
|
Thank you @Amoifr. |
configureImageRule()andconfigureFontRule()take(options, ruleCallback). When a callback is passed as the first argument, for example:the function lands in the
optionsparameter.Object.keys(aFunction)is empty, so no option validation fails, and the callback is silently dropped: the rule is never customized. This is a common mistake because several otherEncore.configure*()methods take a single callback.This PR turns that silent no-op into a helpful error pointing at the correct 2-argument form:
Only broken calls are affected (a function is never a valid
optionsvalue), so there is no BC impact on working code.This addresses the most surprising part of #1221 (the callback being ignored without any feedback). Note that overriding the filename does work today through the documented 2-argument callback by modifying the nested
rule.oneOf[1].generator; settingrule.generatorat the top level has no effect because Encore wraps the asset rule in aoneOf. Happy to follow up on that ergonomics point separately if you think it is worth improving.