De acuerdo con este enlace (documentación de Terser) , si está utilizando el último Webpack 5, no necesita instalar el complemento Terser, ya que está incluido en el Webpack 5 listo para usar. Sin embargo, estoy teniendo dificultades para hacer que esto funcione.
Si elimino el terser-webpack-plugin de mi archivo packages.json y trato de usarlo de esta manera (ver a continuación webpack.production.js), obtengo errores de compilación como este:
[webpack-cli] No se pudo cargar la configuración 'D:\Project\React\MyApp\config\webpack.production.js'
[webpack-cli] Error: no se puede encontrar el módulo 'terser-webpack-plugin'
webpack.producción.js
const TerserPlugin = require('terser-webpack-plugin'); const webpack = require('webpack'); const { merge } = require('webpack-merge'); module.exports = merge(commonCfg, { ...... optimization: { minimize: true, minimizer: [new TerserPlugin({ cache: false, parallel: false, sourceMap: true, })] }, Ahora, si incluyo la última terser-webpack-plugin (5.1.1) en mi package.json y ejecuto mi compilación, recibo el siguiente mensaje de error:
[webpack-cli] No se pudo cargar la configuración 'D:\Project\React\MyApp\config\webpack.production.js'
[webpack-cli] Objeto de opciones no válido. Terser Plugin se ha inicializado utilizando un objeto de opciones que no coincide con el esquema de la API.
- options tiene una propiedad desconocida 'sourceMap'. Estas propiedades son válidas: objeto { probar?, incluir?, excluir?, terserOptions?, extractComments?, parallel?, minify? }
La única forma en que puedo hacer que esto funcione es manteniendo terser-webpack-plugin en la versión 4.2.X.
¿Hay alguna manera de que pueda hacer que esto funcione con la última versión de Terser? ¿O tal vez no entendí bien la documentación?
Probé la siguiente configuración con la versión 5.25.0 del paquete web, no es necesario instalar terser-webpack-plugin y funcionó para mí.
optimization: { minimizer: [(compiler) => { return () => { return { terserOptions: { mangle: { reserved: ['Td', 'Tr', 'Th', 'Thead'] } } } } }] }Hola, así es como resolví el Terserof Webpack 5
Antes de Webpack 5:
minimizer: [ new TerserPlugin({ terserOptions: { mangle: { compress: {}, }, } }) ]Después del paquete web 5:
minimizer: [ (compiler) => { const TerserPlugin = require('terser-webpack-plugin'); new TerserPlugin({ terserOptions: { compress: {}, } }).apply(compiler); }, ]puede leer más sobre esto aquí https://webpack.js.org/configuration/optimization/ y para verificar la opción terser, consulte esta url https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
aquí hay un enlace a mi artículo con más problemas de error de migración resueltos https://medium.com/@arianpopalyar/webpack-4-to-webpack-5-migration-9bc683d2bc72