react concepts cli argentina webpack

concepts - webpack react



Cómo “include” y “exclude” funcionan en el cargador de paquetes web (2)

El problema es que sin eso, exclude (o include ) un paquete web atravesaría las dependencias cuando los apunta a su código y los procesa. Aunque eso podría funcionar, vendría con una fuerte penalización por desempeño.

Prefiero configurar una include (lista blanca sobre lista negra), ya que eso me da más control sobre el comportamiento. include el directorio de mi aplicación y luego agrego más elementos a la include según la necesidad. Esto me permite hacer excepciones fácilmente y procesar bits de node_modules si es absolutamente necesario.

Actualizar y responder:

Mi malentendido fue:

Todos los archivos importados / requeridos serán transformados por el cargador.

Sin embargo, algunos archivos importados / requeridos no son necesarios para ser transformados. Por ejemplo, se han procesado los archivos js en "node_module". Así que no hay necesidad de ser transformado nuevamente por el cargador de Babel. Básicamente es por eso que necesitamos "excluir: / node_modules /" en el cargador.

De forma similar, si sabe qué archivos va a transformar un cargador, puede usar "incluir".

En pocas palabras, entry.js incluirá todos los archivos importados / necesarios. Pero entre estos archivos, solo algunos de ellos necesitan ser transformados. Es por eso que "loader" introduce "include" y "exclude".

Todavía no estoy del todo claro por qué necesitamos usar "incluir" o "excluir" en el cargador de webpack.

Debido a que la entrada del archivo js siempre tendrá que incluir recursivamente sus archivos js importados / requeridos. Todos los archivos importados / requeridos serán transformados por el cargador. Si ese es el caso, ¿por qué necesitamos "incluir" o "excluir" en el cargador?

Un caso común es "excluir: / node_modules /". Lo que me confunde es que si el archivo js de entrada necesita algunos archivos de los node_modules y luego excluimos los node_modules. Entonces, el archivo del paquete final no contendrá el archivo requerido de node_modules. En ese caso, el paquete final no funcionará correctamente. ¿Me estoy perdiendo algo aquí?

module.exports = { entry: [ ''./index.js'' ], output: { path: path.join(__dirname,"public"), filename: ''bundle.js'' }, module: { loaders: [{ test: //.js$/, loader: ''babel'', exclude: /node_modules/, query: { presets: [''es2015''] } }] } };

Gracias

Derek


Las respuestas hasta ahora no han respondido realmente a su pregunta central. Desea saber cómo su aplicación empaquetada aún puede funcionar a pesar de que sus dependencias han sido "excluidas".

En realidad, esas propiedades ''include'' y ''exclude'' le dicen a los cargadores si deben incluir / excluir los archivos descritos (como el contenido de node_modules ), no el propio paquete web .

Por lo tanto, los módulos ''excluidos'' que importas de node_modules se empaquetarán , pero no serán transformados por babel. Este suele ser el comportamiento deseado: la mayoría de las bibliotecas ya se han transpilado a ES 5.1 (o incluso a ES 3), por lo que perder ciclos de CPU analizándolos con babel (por ejemplo) no tiene sentido en el mejor de los casos. En el peor de los casos, como en el caso de las grandes bibliotecas de un solo archivo como jQuery, puede generar un error y hacer que su compilación se detenga. Así que excluimos los node_modules .