Webpack 4, исключить сторонние библиотеки из минификации/сжатия

У меня в конфиге следующее:

const viewerConfigProdWeb = merge(common.commonWebConfig, {
output: {
    path: outputPath,
    filename: common.bundleNameWeb
},
devtool: 'source-map',
mode: 'production',
optimization: {
    minimizer: [
        new UglifyJsPlugin({
            cache: true,
            parallel: true,
            sourceMap: true,
            uglifyOptions: {
                compress: false,    //<--- if enabled, causes errors
                ecma: 6,
                mangle: true,
                exclude: path.resolve(__dirname, '../js/vendor/tomtom.min.js'),    // <--- it is already minified, want to exclude it somehow. But this approach doesn't work =(
            }
        })
    ]
}
});

Я получаю ошибки времени выполнения, когда меняю «сжатие» на true в uglifyOptions. Эти ошибки появляются, когда webpack пытается оптимизировать стороннюю библиотеку, которая уже сжата и минимизирована. Как исключить его из оптимизации?

Обновление: согласно ответу Сина и readme, изменен раздел оптимизации в конфиг следующий:

    optimization: {
    minimizer: [
        new UglifyJsPlugin({
            cache: true,
            parallel: true,
            sourceMap: true,
            exclude: /\.min\.js$/,     //<---- moved up and used regex
            uglifyOptions: {
                compress: true,        //<---- still causes errors when enabled
                ecma: 6,
                mangle: true
            }
        })
    ]
}

Это тоже не работает =( Есть другие идеи?


person Anton Pilyak    schedule 19.03.2018    source источник


Ответы (1)


Поработав некоторое время, наконец обнаружил, что опция exclude проверяет только имя выходного файла, а не имя исходного файла. Для решения этой проблемы существует ошибка github. Вы можете попробовать решения, предоставленные @hulkish там.


Оригинальный ответ (не работает):

Попробуйте добавить exclude на верхний уровень параметров UglifyJsPlugin. И используйте RegExp или массив RegExp вместо полного пути. См. файл README uglifyjs-webpack-plugin.

person Sin    schedule 19.03.2018
comment
Спасибо за ответ, но у меня это тоже не работает =( - person Anton Pilyak; 20.03.2018
comment
Спасибо за Ваш ответ! В настоящее время я переключился на другую библиотеку, в которой нет этой проблемы. Если еще раз столкнусь, попробую решение, описанное в вопросе. - person Anton Pilyak; 04.04.2018