webpack-encore icon indicating copy to clipboard operation
webpack-encore copied to clipboard

Overriding the file name for "configureFontRule" or "configureImageRule" doesn't work when using a generator

Open egonolieux opened this issue 2 years ago • 7 comments

According to the documentation, a custom callback can be passed to the Encore.configureFontRule() and Encore.configureImageRule() functions: https://github.com/symfony/webpack-encore/blob/main/index.js#L1457.

However, when using this callback to specify a custom generator, the filename option of the generator seems to get ignored:

Encore
    .configureFontRule(rule => {
        rule.test = fontFileExtensionRegex;
        rule.generator = {
            filename: 'whatever/path/[name][ext]',
        };
    });

The issue seems to be this default filename option: https://github.com/symfony/webpack-encore/blob/main/lib/WebpackConfig.js#L78.

Using the same example, explicitly setting filename to global.undefined in the regular options seems to fix the issue:

Encore
    .configureFontRule(
        {
            filename: global.undefined,
        },
        rule => {
            rule.test = fontFileExtensionRegex;
            rule.generator = {
                filename: 'whatever/path/[name][ext]',
            };
        },
    );

egonolieux avatar Sep 01 '23 14:09 egonolieux

I guess we could execute the user’s callback first, then add filename after if both it and generator are undefined. PR welcome :)

weaverryan avatar Sep 01 '23 23:09 weaverryan