El tamaño de la carpeta node_modules no es un problema. Es un privilegio

Mis pensamientos sobre el debate sobre el tamaño de la carpeta node_modules

Solía enojarme con elnode_modulestamaño de la carpeta. ¿Cómo puede una aplicación JavaScript tener un tamaño de 100, 200 MB sin que yo agregue ninguna línea de código? Yo solo corronpx create-react-app todolisty descargué 218,7MB decosas! (Lo acabo de comprobar ahora, es un número real).

Siempre que piense en el tamaño de node_modules, piense en los millones de horas hombre que los programadores le dedicamos.

Todo esto es software de código abierto. Software que puede inspeccionar y del que puede aprender. Amablemente donado por programadores y empresas de todo el mundo. Es un esfuerzo global del que alguien hizo muy fácil beneficiarse. Pasó a sernpm, primero la herramienta y luego la empresa.

Todos acordamos publicar nuestro código en sus servidores, y la gente construyó cosas en la parte superior, otras cosas en la parte superior, hasta que llegamos al punto en que teníamos iniciadores rápidos (como create-react-app o la CLI de Vue, por ejemplo) que puede utilizar para obtener una gran cantidad de energía en nuestras manos de forma gratuita.

¿200 MB son demasiado en la era del almacenamiento rápido de pedidos de TB?

Tenga en cuenta que la gran mayoría de este tamaño son pruebas, documentación y demás. Además, la gran mayoría del código restante solo se utiliza en el entorno de desarrollo. No es como si fuera a entregar una aplicación de 200 MB al cliente, creo que esto se comprende bien.

Tomé el ejemplo de create-react-app. ¿Qué hay en esos 200 MB?

Para empezar, create-react-app contiene

  • un compilador (Babel)
  • un paquete (Webpack)
  • un minificador de código
  • un linter (ESLint)
  • una herramienta de canalización de estilo (SCSS)
  • un servidor de desarrollo con recarga en vivo
  • un corredor de prueba (Jest)

Si desea escribir una aplicación para Mac o iPhone, debe instalarXcode, el IDE proporcionado por Apple.Xcodetiene (espere ...) casi 14GB de tamaño. Eso es 70 veces el tamaño de node_modules. Por supuesto, estamos comparando dos cosas diferentes, pero node_modules contiene todo lo que necesita para comenzar a trabajar en su código. Puede emparejarlo con VS Code, que tiene un tamaño de 200 MB, o con Sublime Text, que tiene 30 MB; no importa, nadie es estrictamente necesario (aunque no puede crear una aplicación iOS / macOS sinXcode).

Si la preocupación es que su disco duro se esté llenando de módulos,pnpmes una solución óptima que centraliza los módulos en una ubicación y todas sus aplicaciones usan esos módulos en lugar de crear su propia versión local. Es utilizado por herramientas de codificación en línea comoFallapor ejemplo.

He leído que la gente se pregunta cómo pueden auditar la base de código en busca de problemas de seguridad u otros problemas si nuestras aplicaciones se basan en demasiado código escrito por otros.

Es una elección, ¿verdad? No está obligado a utilizar módulos. Puede crear su propia versión de herramientas que no requiera todos esos módulos, pero luego tendrá que mantener ese código, probarlo, administrar nuevas versiones cuando sea necesario actualizar las cosas y más.trabaja.

Tuve la oportunidad de trabajar con otros lenguajes y ecosistemas donde la vitalidad y las oportunidades de npm hubieran sido una bendición, y en su lugar tuve que construir mi propia pequeña biblioteca para todo, ya que las cosas que encontré distribuidas por desarrolladores de terceros fueron ya sea inexistente o abandonado desde hace un par de años, y no actualizado con el resto del idioma.

Tal vez podríamos tener una bandera para descargar solo el código de producción en lugar de toda la documentación, las pruebas y qué no. Pero esta es solo una idea que me vino a la mente ahora, no estoy seguro de cómo sería posible.

De todos modos: larga vida,node_modules!


Más tutoriales de js: