Estoy tratando de hacer que las 2 características del paquete web funcionen juntas.
La primera es la exclusión de código al introducirlo dentro de un if (process.env.NODE_ENV === 'development') { block.
El segundo es la exclusión de módulos importados no utilizados.
El problema es que estas dos operaciones parecen estar ocurriendo en el orden opuesto, así que como resultado, si tenemos un código que se parece a esto:
import Module from 'module'; ----------------------------------- if (process.env.NODE_ENV === 'development') { use(Module); }El bloque de código puede eliminarse, pero el módulo importado está presente en el paquete resultante.
¿Hay alguna forma de ejecutar la verificación de una importación no utilizada después de eliminar el bloque if, o estoy haciendo algo mal y, de ser así, cuál es la forma correcta de no importar un módulo en una compilación de producción?
Con suerte, hay una solución más limpia que utiliza las 2 funciones anteriores, pero si alguien más se encuentra con esta pregunta y aún no se ha respondido, puede escribir un cargador corto que logre este objetivo:
module.exports = function (source) { return this.getOptions().isDevelopment ? source : source.replace(/\/\* *dev:start ?\*\/[\s\S]*?\* *dev:end *\*\//g, ''); };Luego puede colocarlo como el primer cargador para procesar sus archivos (es decir, el último cargador de la matriz):
{ test: /\.(js|ts|jsx|tsx)?$/, use: [ { loader: path.resolve('./remove-dev.loader.js'), options: { isDevelopment }, }, ], },Y luego puede utilizarlo en el código, convirtiéndolo en algo como esto:
import Module from 'module'; ----------------------------------- /* dev:start */ use(Module); /* dev:end */