React: ¿podemos impotar solamente la funcionalidad seleccionada desde el módulo npm al instalar usando webpack o algo más?

He probado la configuración básica de la webpack desde aquí:

https://webpack.js.org/guides/getting-started/

En este enlace he utilizado la función de módulo de lodash npm

_.join(['Hola', 'webpack'], ');

pero hay muchas funciones disponibles en el módulo lodash que nunca usaré.

Como sabio, Material js, Bootstrap js etc. Nunca usamos muchas funciones.

Debido a eso mientras se crea construir, el tamaño del archivo js sería grande y el sitio se cargará más lento.

Entonces, ¿podemos instalar sólo funciones seleccionadas con su dependencia en lugar de la instalación completa del módulo?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por bytebard66b1


3 Respuestas:

  • Si usted es webpack4, han implementado la opción de agitación de árboles, significa que eliminará el código que usted no está utilizando de la biblioteca. Lodash es afeitado de árboles, usted puede importar su biblioteca como esta

    import { join } from 'lodash/join';
    

    Esto sólo importará unirse de Lodash. Usted puede referir esto doc para más información

    Respondida el Dec 18, 2020 a las 04:19 - por bytebard

    Votos positivos: 0 | Votos negativos: 0

  • Sí, es posible importar solamente la funcionalidad seleccionada de un módulo npm en lugar de instalar todo el paquete completo. Para lograr esto, puedes utilizar la función de importación de desestructuración de ES6 que te permite importar solo las partes del módulo que necesitas.

    Por ejemplo, en el caso de lodash, en lugar de importar todo el paquete, puedes importar únicamente la función específica que deseas utilizar. Aquí tienes un ejemplo:

    javascript
    import join from 'lodash/join';
    
    const result = join(['Hola', 'webpack'], ' ');
    

    Al importar solo la función join de lodash, estarás reduciendo la cantidad de código que se incluye en tu aplicación, lo cual puede ayudar a mejorar el rendimiento de tu sitio web al reducir el tamaño de los archivos JavaScript que se cargan.

    Es importante tener en cuenta que no todos los paquetes npm permiten este tipo de importación selectiva, por lo que es posible que necesites verificar la documentación del paquete específico que estés utilizando para ver si es compatible con esta técnica.

    Respondida el Dec 19, 2020 a las 04:19 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Sí, puedes importar solo funciones seleccionadas desde un módulo cuando lo instalas usando Webpack.

    Para hacer esto, sigue estos pasos:

    • Instala Webpack y el módulo deseado. Por ejemplo, para instalar Lodash:

    
       npm install --save-dev webpack lodash
       

    • Crea un archivo de configuración de Webpack. Generalmente se llama `webpack.config.js`.
    • En el archivo de configuración, especifica las funciones que deseas importar desde el módulo. Para Lodash, puedes usar la sintaxis de importación dinámica:

    js
       const { join } = require('lodash');
       

    Esto importará solo la función join de Lodash.

    • Configura Webpack para usar el archivo de configuración. Puedes hacerlo agregando el siguiente script al paquete `package.json`:

    json
       "scripts": {
         "start": "webpack"
       }
       

    • Ejecuta el comando `npm start`. Esto ejecutará Webpack y creará un archivo JavaScript que contiene solo las funciones importadas.

    Beneficios de importar funciones seleccionadas:

    Tiempos de carga más rápidos: Los archivos JavaScript serán más pequeños, lo que reducirá los tiempos de carga. Menor consumo de memoria: Solo se importan las funciones necesarias, lo que libera memoria para otras tareas. Mayor seguridad: Evitas importar funciones innecesarias que podrían introducir vulnerabilidades de seguridad.

    Nota:* Este enfoque solo funciona con módulos que utilizan el formato de exportación ES6 (ECMAScript 6). Si el módulo utiliza un formato de exportación diferente, es posible que debas utilizar una biblioteca adicional como babel-loader.

    Respondida el Dec 19, 2020 a las 04:23 - por Gemini

    Votos positivos: 0 | Votos negativos: 0