Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

599
Views
webpack/terser: ¿Cómo puedo excluir un paquete de la minificación, pero aún incluir ese paquete en el resultado empaquetado?

Encontré una serie de soluciones para excluir módulos particulares de la minificación, pero todas las soluciones que he visto hasta ahora no solo omiten la minificación de esos paquetes, sino que hacen que esos paquetes se omitan por completo de la salida del paquete web, lo que requiere que proporcione el código omitido por algún otro medio.

Lo que quiero hacer es continuar empaquetando todo el código necesario en un solo archivo de salida, pero simplemente tener secciones de esa salida sin minimizar. ¿Es eso posible?

La razón por la que quiero hacer esto en este caso particular es que el paquete mysql está fallando después de la minificación. Por el momento he deshabilitado toda la minificación, pero prefiero no resolver este problema de esa manera.

 const webpack = require('webpack'); const LicensePlugin = require('webpack-license-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const path = require('path'); const mode = process.env.NODE_ENV || 'production'; // noinspection JSUnresolvedFunction module.exports = { mode, entry: './app/app.ts', target: 'node', output: { path: path.resolve(__dirname, 'dist'), filename: 'app.js' }, node: { __dirname: false, __filename: false, global: true }, resolve: { extensions: ['.ts', '.js'], mainFields: ['fesm2015', 'module', 'main'] }, module: { rules: [ { test: /\.ts$/, use: [ 'ts-loader', ] } ] }, optimization: { // TODO: Minification breaks mysql. How to exclude mysql from minification, but include in output? minimize: false, // mode === 'production', minimizer: [new TerserPlugin({ exclude: /node_modules\/mysql/, // <-- This doesn't work terserOptions: { output: { max_line_len: 511 }, } })], }, devtool: 'source-map', ignoreWarnings: [{ message: /require function is used in a way|the request of a dependency is an expression/ }], plugins: [ new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }), new LicensePlugin({ outputFilename: '3rdpartylicenses.txt', excludedPackageTest: name => /^(asynclist|emitter)/.test(name) }) ] };

Actualización : el problema particular con mysql y la minificación parece ser la manipulación de nombres de variables y/o funciones. Si configuro la opción mangle en false , puedo minimizar todo el código, incluido mysql , con éxito. Todavía tengo que averiguar qué nombres específicos no se pueden alterar sin causar problemas.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!