tutorial react page online español body app webpack webpack-2 webpack-plugin

react - webpack wikipedia



¿Cómo escribir el complemento Webpack que agrega módulos al paquete sobre la marcha basado en otros módulos? (1)

Tengo un problema al escribir un complemento de Webpack para un servicio de traducción.

La meta es:

  1. Obtenga los nombres (y el código fuente) de todos los módulos requeridos durante la compilación. Necesito poder escanear el código fuente incluido para el uso de la función especial t() , pero quiero escanear solo los módulos que se incluirán en el paquete (que, dependiendo de la configuración de compilación, puede ser un subconjunto de todos los módulos del proyecto) .
  2. Con base en los módulos recopilados, quiero crear módulos adicionales (con traducciones) sobre la marcha y agregarlos al paquete. Esos módulos deben poder importar sus propias dependencias.

Un requisito adicional es que la función de división de código de la Webpack debería funcionar con los módulos creados sobre la marcha (quiero extraerlos a archivos separados, por ejemplo, bundle.[lang].js ). Además, lo cual puede estar fuera del alcance de esta pregunta, debo hacer que los fragmentos con traducciones sean opcionales (para que no tenga que cargar todos los idiomas, sino solo uno).

Se pueden encontrar más detalles en https://github.com/ckeditor/ckeditor5/issues/387 .

He estado probando varias soluciones, pero la documentación de Webpack 2 no es muy útil. Puedo obtener todos los módulos escuchando los ganchos de resolución del módulo ( before-resolve ), pero no sé cuándo se resuelven todas las dependencias y no sé si puedo agregar más módulos después de eso (y cómo hacerlo) - ¿ addEntry bien addEntry y cuándo puedo usarlo?

También estaba pensando en conectar el complemento Webpack y el cargador de Webpack (porque la función que necesito es bastante similar al cargador de estilo de Webpack ), pero desde el nivel de complemento solo puedo agregar la ruta al cargador, no el cargador en sí, para que pueda '' t pasa el objeto config como parámetro - ¿estoy equivocado?

PD. Uso Webpack 2. Si los requisitos le parecen extraños, consulte https://github.com/ckeditor/ckeditor5/issues/387 :).


Esta es una pregunta realmente compleja, pero puedo mostrarle cómo puede agregar dependencias adicionales a módulos específicos como si fueran necesarios desde ese módulo. Esto garantiza que los módulos agregados estarán en los fragmentos correctos y también se eliminarán si el módulo principal se elimina del paquete.

const CommonJsRequireDependency = require("webpack/lib/dependencies/CommonJsRequireDependency") class MyPlugin { apply(compiler) { compiler.plugin("compilation", compilation => { compilation.plugin("succeed-module", module => { // this will be called for every successfully built module, but before it''s parsed and // its dependencies are built. The built source is available as module._source.source() // and you can add additional dependencies like so: module.dependencies.push(new CommonJsRequireDependency("my-dependency", null)) } } } }

Esto es solo una parte de eso. También es probable que necesite escribir su propio cargador para generar realmente las traducciones (puede reemplazar my-dependency arriba con my-loader!path/to/module para invocarlo inmediatamente) y algún paso después de que los fragmentos se creen para quizás extraer en un nuevo activo y cárguelos ya que en realidad no se require ningún lugar.