¿Qué hay de nuevo en npm?

Rate this content
Bookmark

La CLI de npm ha sido y sigue siendo una herramienta fundamental para los desarrolladores del ecosistema de Node.js/JavaScript. El año pasado, npm@7 se convirtió en Generalmente Disponible, introduciendo una gran cantidad de cambios y nuevas capacidades, incluyendo: mejoras en el archivo de bloqueo, soporte para espacios de trabajo, instalación de dependencias pares por defecto, npm diff, npm explain, npm exec, npm set-script y mucho más. Nos sumergiremos en este trabajo y compartiremos algunas noticias emocionantes sobre lo que se espera en las próximas semanas y meses.

26 min
01 Jul, 2021

Video Summary and Transcription

Bienvenidos a mi charla sobre las novedades en la CLI de NPM. NPMv7 introdujo muchas nuevas capacidades, incluyendo la instalación de dependencias pares por defecto. npm v7 también introdujo soporte para espacios de trabajo, permitiendo la definición de proyectos dentro de tu proyecto principal. El equipo de NPM está mejorando continuamente la CLI con lanzamientos semanales y está trabajando en características emocionantes en colaboración con GitHub. NPM no es un acrónimo de Node Package Manager, y la CLI seguirá mejorando con el apoyo del equipo en crecimiento.

Available in English

1. Introduction to NPM CLI

Short description:

Bienvenidos a mi charla sobre las novedades en la CLI de NPM. NPM es conocido por instalar paquetes, con casi 125 mil millones de descargas mensuales de paquetes. Pero también ofrecemos soporte para descubrimiento, construcción, empaquetado, pruebas y más. Nuestro equipo ha crecido, con nuevos miembros y casi 700 colaboradores. NPMv7 introdujo muchas nuevas capacidades, incluida la instalación de dependencias entre pares de forma predeterminada.

Bienvenidos a todos. Gracias por unirse hoy. Mi nombre es Darcy Clark y voy a hablar sobre las novedades en la CLI de NPM. Quiero agradecer a todos los que han organizado la conferencia hasta ahora y a todas las personas detrás de escena en DevOpsJS 2021.

Una breve descripción de quién soy. Soy el gerente de ingeniería del equipo de CLI de NPM en GitHub. Estoy basado aquí en Toronto, Ontario, Canadá, y me pueden encontrar en varias plataformas en línea. Así que quiero comenzar hablando un poco sobre lo que hace NPM o lo que la gente piensa que hacemos. Y creo que lo que más se nos conoce es por instalar una gran cantidad de paquetes, esta es nuestra cantidad promedio de descargas de paquetes. Creo que la última vez que verifiqué, estábamos cerca de las 125 mil millones de descargas mensuales como comunidad, lo cual es un logro asombroso. Creo que teníamos alrededor de 100 mil millones de descargas mensuales promedio en septiembre, octubre, octubre, alrededor del 11 aniversario del 11º año de NPM, lo cual es bastante genial. Hacemos más que solo instalar y publicar paquetes. La CLI de NPM también admite descubrimiento, construcción, empaquetado, pruebas y muchas otras funciones con una serie de comandos. Si estás buscando información sobre los más de 61 comandos y en crecimiento, puedes consultar nuestra documentación en docs.npmjs.com. Recientemente, la documentación recibió un nuevo diseño y una actualización, y hay una gran cantidad de información sobre la configuración y los comandos que admitimos. Entonces, ¿qué ha cambiado en la CLI de NPM? Porque es posible que te hayas cambiado de herramienta hace un tiempo. ¿Qué ha cambiado o qué hay de nuevo en la CLI de NPM? Bueno, lo que ha cambiado bastante es nuestro equipo. En los últimos años, hemos agregado y hemos tenido nuevos miembros en nuestro equipo. Actualmente, tenemos un equipo central compuesto por mí, Roy Adorno, Nathan Lafreniere y Michael Garvan, nuestro GAR. También estamos expandiendo este equipo y agregando tres nuevos miembros el próximo mes. También recibimos una gran cantidad de colaboradores, casi 700 colaboradores en la CLI de NPM, lo cual es bastante asombroso. Lo que también ha cambiado es que recientemente lanzamos NPMv7 y se hizo disponible en enero de 2021. En la versión 7, introdujimos muchas nuevas capacidades, incluidas algunas mejoras en los comandos heredados y también agregamos cosas como el soporte para espacios de trabajo, entre muchas otras cosas más. Así que profundicemos en algunos de estos cambios.

En la versión 7, una de las cosas más importantes que notarás es que hemos comenzado a instalar las dependencias entre pares de forma predeterminada. Las dependencias entre pares no son nuevas en absoluto, han estado presentes durante unos ocho años. Pero lo que notamos es que muchos proyectos tenían que y muchos desarrolladores tenían que gestionar manualmente estas dependencias, lo cual es un problema. NPM es un administrador de paquetes y queremos gestionar tus paquetes. En este ejemplo, puedes ver que tengo dos proyectos de espacios de trabajo que dependen de diferentes versiones de React. Estas versiones son conflictivas y nosotros

2. Nuevas características y mejoras en npm v7

Short description:

Anteriormente, en la versión 7, ahora instalamos y resolvemos las dependencias entre pares, proporcionando advertencias y pasos accionables si no podemos hacerlo. La lógica para esta resolución se ha trasladado a un nuevo paquete llamado Arborist. También introdujimos npm explain, que muestra por qué se instaló un paquete. npm exec ahora solicita confirmación antes de instalar nuevos paquetes. npm audit se ha refactorizado para facilitar la gestión de vulnerabilidades. npm diff te permite ver la diferencia entre las versiones de los paquetes. npm v7 introdujo un nuevo esquema de bloqueo de paquetes y mejoró el rendimiento.

no sabemos exactamente qué... Anteriormente, simplemente dejábamos esto y permitíamos que los desarrolladores los gestionaran. En la versión 7, ahora haremos todo lo posible para instalar y resolver tus dependencias entre pares. Y si no podemos, mostraremos una especie de advertencia con algunos pasos accionables para que resuelvas estas dependencias. Y si estás buscando la lógica real que se ejecuta y realiza esta resolución, hemos trasladado todo lo que... Es decir, el cerebro de las operaciones, a un nuevo paquete que llamamos Arborist. Continuando, también hemos introducido, para ayudar con este cambio, npm explain, o el alias npmy. Y este comando funciona de manera similar a npmy y npm explain de yarn, donde te mostrará la razón por la que se instaló un paquete. En este caso, he ejecutado npm explain chalk, preguntando esencialmente por qué está instalado chalk, y npm te informará que en este caso, tengo un proyecto de espacio de trabajo llamado b, y en realidad incluye chalk como una dependencia entre pares, y esa es la razón por la que se instaló. Así que tenemos una buena experiencia para los desarrolladores y herramientas para ayudar con la ergonomía en la gestión de tus dependencias.

Además, lo nuevo en npm exec se introdujo en la versión 7. Es esencialmente el núcleo de npx. Entonces, si alguna vez has usado npx, esto no será algo nuevo para ti. Hemos agregado algunas salvaguardias con npm exec y npx. En la versión 7, ahora pedimos confirmación antes de instalar un paquete que nunca hemos visto antes, te pedimos que confirmes y tenemos un mensaje de confirmación para asegurarnos de que no instales accidentalmente algo y ejecutes algo que no querías hacer. También a partir de la versión 7, hemos realizado cambios significativos en npm audit. npm audit ha sido refactorizado en términos de lógica, rendimiento y también interfaz de usuario. Ahora esperamos que sea mucho más fácil para los desarrolladores comprender rápidamente qué está sucediendo y cuáles son las banderas para las diferentes dependencias que pueden tener un problema de vulnerabilidad. Y esperamos que esta sea una experiencia mucho más rápida para los desarrolladores y que sea una experiencia mejorada en general. Y un nuevo comando que hemos introducido recientemente es npm diff. Con npm diff, funciona de manera similar a git diff, donde puedes especificar un nombre de paquete, una versión o un archivo y puedes ver la diferencia entre esas dos cosas. Esto es genial. En este ejemplo, estoy viendo los cambios entre dos versiones diferentes de mi paquete llamado sleepover y puedo ver que la versión se actualizó y el archivo package.json cambió ligeramente. Otro gran cambio en npm v7 fue la introducción de un nuevo esquema de bloqueo de paquetes. Anteriormente estábamos en la versión 1 del bloqueo de paquetes y al hacer la transición o al actualizar a npm v7, actualizaremos automáticamente la versión de tu archivo de bloqueo de paquetes para cumplir con este nuevo esquema. Por lo tanto, no debería haber problemas con la actualización y si tienes algún problema con los desarrolladores que usan v6 o v7, puedes decir no guardar o proporcionar la bandera no guardar para no actualizar tus archivos de bloqueo de paquetes. Otro gran logro que hemos logrado con npm v7 son algunas mejoras en el rendimiento real de muchos de los comandos. Específicamente en la instalación, inicialmente vimos una especie de degradación, pero notamos que en realidad estábamos instalando más dependencias debido a los cambios en el comportamiento que habíamos introducido con las dependencias entre pares. Por lo tanto, la resolución de dependencias entre pares aumentó nuestros tiempos de instalación porque en realidad estábamos instalando y resolviendo más dependencias, por lo que esto era algo esperado, y como puedes ver hemos comenzado a realizar pruebas de referencia en diferentes escenarios y configuraciones, incluida la instalación de dependencias entre pares. Esa es la última prueba de referencia en la parte inferior. A medida que avanzamos, vimos que hemos logrado mejoras significativas en comparación con nosotros mismos y esperamos continuar este trabajo dentro de las suites de pruebas de referencia que estamos ejecutando y esperamos seguir enfocándonos en el rendimiento como un área para nosotros

3. Soporte para Espacios de Trabajo en NPM v7

Short description:

npm v7 introdujo soporte para espacios de trabajo, permitiendo la definición de proyectos dentro de tu proyecto principal. El trabajo se ha dividido en dos fases, con la segunda fase enfocada en hacer que más comandos sean conscientes de los espacios de trabajo. Se lanzarán dos nuevas configuraciones, 'workspaces' y 'workspace', que te permitirán ejecutar comandos en los espacios de trabajo definidos. Esta nueva capacidad está disponible en NPM v7.7, con un mayor soporte en futuras versiones.

para optimizar y mejorar. Si alguna vez estás interesado en el trabajo que estamos haciendo allí, puedes ir a npm slash benchmarks y ver las diferentes ejecuciones que estamos realizando con las diferentes versiones de npm que estamos construyendo.

Entonces, npm v7 introdujo soporte para espacios de trabajo. Esto fue una gran victoria para nuestro equipo. Es algo que queríamos ofrecer a la comunidad de desarrolladores desde hace tiempo. El soporte básico aquí para los espacios de trabajo es simplemente la definición de los proyectos dentro de tu proyecto principal.

En este caso, en este ejemplo, simplemente he definido un espacio de trabajo A y B. Y a partir de la versión 7, 7.0.0, el único comando real que entendía o soportaba estas definiciones de espacios de trabajo era npm install. Y en realidad tengo una referencia a nuestra documentación. Y también hay referencias al RFC que creamos originalmente para este soporte básico.

Desde entonces, hemos dividido el trabajo en otras dos fases. Y la segunda de ellas es en lo que hemos estado trabajando recientemente, que es hacer que más comandos sean conscientes de los espacios de trabajo. Y esta segunda etapa de trabajo realmente abarca los otros 60 comandos que tenemos para definirlos y categorizarlos en términos de su conciencia de espacios de trabajo.

Lo que verás son dos nuevas configuraciones que se lanzarán en la próxima semana, junto con otros trabajos asociados a la conciencia de espacios de trabajo. La primera configuración que tenemos es 'workspaces'. Es esencialmente un booleano que se pasa a cualquiera de los comandos de NPM para indicarte que deseas ejecutar ese comando en los espacios de trabajo que has definido. Y luego la segunda configuración es una especie de comando filtrado para el espacio de trabajo específico en el que deseas ejecutar el comando. Así que eso es 'workspaces' y 'workspace'. Por lo tanto, ws y w son los alias.

Y si vemos cómo se ve esto en la práctica, a partir de NPM 7.7, podrás ejecutar cualquier script o comando del ciclo de vida, como scripts de ejecución, ejecutar pruebas, iniciar, detener, reiniciar con las banderas ws o w. En este caso, he ejecutado las pruebas con ws, y se ejecutan todos los scripts de prueba que están en los espacios de trabajo que he definido en mi proyecto. Y aquí, en este caso, en este ejemplo, he filtrado para ejecutar solo las pruebas del espacio de trabajo A que he definido en este proyecto. Y el espacio de trabajo es muy flexible. Puedes definir el espacio de trabajo varias veces. Así que, en este caso, he definido B y luego A. Y debido a la forma en que está implementado, se ejecutan en serie. Y puedes ver que las pruebas de B se ejecutan primero y luego las de A. Y si definiera más y más espacios de trabajo, verías que se realizan más y más ejecuciones. Por lo tanto, esta nueva función, esta nueva capacidad de trabajar con espacios de trabajo está disponible a partir de NPM v7.7, que lanzaremos en los próximos días. La versión 7.8 tendrá soporte para exec e init, y el resto de los subcomandos que sean conscientes de los espacios de trabajo vendrán posteriormente. Si alguna vez deseas obtener más información

4. NPM Pipeline and Future Plans

Short description:

Ahora enviamos semanalmente, con nuevos parches, mineros y mejoras cada semana. Nuestro pipeline incluye características próximas como el protocolo de registro y las anulaciones de paquetes, así como mejoras en los espacios de trabajo e instalaciones filtradas o con alcance. Si quieres obtener más información, visita el foro npm-RFCs o únete a nuestra llamada semanal npm-OpenRFC. ¡Gracias a todos los involucrados en el evento!

En la última versión de NPM, puedes instalarnos con npm -g. Ahora enviamos semanalmente. Verás nuevos parches, nuevos mineros, nuevas mejoras cada semana. Quiero tomarme un tiempo no solo para hablar de lo que hemos estado enviando y de lo que vamos a enviar, sino también de cómo se ve nuestro pipeline, qué está por venir.

En los próximos trimestres, el segundo y tercer trimestre de 2020, estamos considerando el protocolo de registro y las anulaciones de paquetes como dos RFC que tenemos en mente y que queremos poner en marcha, incluyendo las indicaciones publicadas en el tercer trimestre, que es otro RFC que ha sido aprobado y solo necesitamos hacer el trabajo. Como se mencionó anteriormente, estamos trabajando en mejoras de los espacios de trabajo en este momento y esperamos terminar el trimestre también con instalaciones filtradas o con alcance, lo cual es una característica realmente genial. Si quieres obtener más información sobre el protocolo de registro o las especificaciones de anulación y los RFC que se están proponiendo en este momento, puedes ir al foro npm-RFCs y ver cómo se ven. Y si quieres involucrarte aún más, nuevamente realizamos una llamada semanal npm-OpenRFC, que se lleva a cabo los miércoles a las 2 p.m. hora del este, y es una llamada en vivo donde hablamos sobre el futuro, el presente y el futuro del proyecto y discutimos esencialmente las solicitudes futuras y las cosas que nos gustaría hacer. También tenemos recursos para la documentación a la que hice referencia anteriormente, nuestro rastreador de errores, eventos en los que estamos, en los que estaremos o en los que hablaremos, nuestra hoja de ruta y otros recursos de retroalimentación en npm.community.

Y eso es todo por hoy. Solo quería agradecer a todos los que han estado involucrados en el evento y no dudes en comunicarte en uno de estos enlaces que se encuentran a continuación. ¡Saludos!

QnA

Discussion and Q&A

Short description:

¡Qué bueno verte! Tenemos una pregunta de Ricardo, quien está muy contento con los espacios de trabajo. Estamos emocionados de proporcionar una experiencia de espacio de trabajo de primera clase. En cuanto a npm v6, seguiremos manteniéndolo para parches de seguridad, pero recomendamos actualizar a v7 para obtener mejoras de rendimiento y una mejor base de código. Como mantenedor, uso v7 para mis proyectos de NPM.

¡Hola, qué bueno verte! Vamos a ver los resultados de tu pregunta. ¿Has utilizado anteriormente el npm-cli? Y el 100% dice que sí, wow, parece que es un proyecto popular entonces. Bueno, estás haciendo cosas geniales entonces, supongo. Sí, creo que ayuda un poco que vengamos por defecto con Node y que la mayoría de los desarrolladores esperemos disfruten del trabajo que estamos haciendo. Sí, genial verte. Así que vamos a responder algunas preguntas, si estás dispuesto. Si quieres seguir haciendo preguntas, aún puedes hacerlo en el canal de Discord, por supuesto. Tenemos una pregunta de Ricardo. Él dice tres cosas, en realidad. Dice, ¿Boris es un árbol de sacudidas? Muy bien encontrado. ¿O gestionando el árbol de dependencias? Quiero decir, wow, los espacios de trabajo son una gran ventaja. Esa siempre fue la razón para usar Yarn en lugar de NPM. Ya no más. ¡Yay! Así que él está muy contento con los espacios de trabajo. Sí, estamos bastante emocionados de proporcionar eso para la comunidad. Queremos tener una experiencia de espacio de trabajo de primera clase. Así que sí, estamos bastante emocionados de completar y tener más características dedicadas a ese tipo de casos de uso para las personas que tienen proyectos de mono repositorio. Sí. Genial. Sb, estás haciendo una pregunta a Thomas, pero creo que te refieres a Darcy, porque él está preguntando, ¿cuáles son los planes para npm v6? Así que para npm v6, en el pasado hemos hecho, con las principales versiones, que el equipo del cliente de npm ha brindado soporte para actualizaciones de seguridad a versiones anteriores importantes. Por ahora, el plan es seguir manteniendo npm v6, en términos de cualquier parche de seguridad que necesitemos aplicar a eso. La esperanza es mantenerlo hasta que la última versión LTS de Node que depende de él llegue al final de su vida útil. Esto significa que lo estaremos respaldando por un tiempo y trataremos de mantenernos al tanto, si se presentan CVE contra las dependencias de v6, haremos todo lo posible para estar al tanto de ellos. Pero la idea es que, ya sabes, v6 está prácticamente completo en cuanto a características, y esperamos que la gente actualice a v7 y obtenga muchos beneficios al hacer eso, incluyendo, ya sabes, mejoras de rendimiento. Y ahora v7 es simplemente una base de código mucho mejor. Así que sí, esperamos que la gente se sume y sí. Genial. Y lo que me intriga es, como mantenedor de este gran proyecto, ¿lo usas tú mismo? ¿Solo lo mantienes, o también lo usas para tus proyectos personales los fines de semana? ¿O cómo te mantienes actualizado siendo un usuario? Uso varias herramientas diferentes en muchos proyectos diferentes, pero definitivamente

NPM Usage and Acquisition by GitHub

Short description:

Soy un consumidor frecuente de NPM y siempre me mantengo actualizado con la última versión. Usar NPM como administrador de versiones de Node facilita el uso de la última versión de NPM v7 en mis proyectos. Aunque no he utilizado los espacios de trabajo de manera extensa, he comenzado a explorar las utilidades en v7, como NPM diff e instalación automática de dependencias de pares. La adquisición de NPM por parte de GitHub y Microsoft ha sido un movimiento positivo, permitiendo la colaboración y emocionantes características futuras. Estamos trabajando en muchas cosas con NPM y GitHub, y la CLI continuará mejorando con el apoyo de nuestro creciente equipo.

Actualmente uso v7 para todo lo que hago con proyectos de NPM. Así que sí, definitivamente soy un consumidor frecuente. Y como v7 se está enviando actualmente en Node 15, y me gusta estar en la última y mejor versión de Node, es realmente fácil mantenerme actualizado. Uso NPM como administrador de versiones de Node. Por lo tanto, es fácil para mí usar en mis proyectos la última versión de NPM v7 también. No tengo muchos proyectos de monorepo, por lo que no he estado utilizando los espacios de trabajo tan intensamente, pero estamos comenzando a usar específicamente los espacios de trabajo y hemos agregado muchas utilidades interesantes en v7. Por ejemplo, NPM diff es algo que he comenzado a usar casi todos los días, especialmente para los registros de cambios. Es una herramienta muy útil para poder comparar entre tu última versión. Y especialmente para los registros de cambios, es fácil extraer esa información de esos archivos. Y sí, he estado utilizando, ya sabes, la instalación automática de dependencias de pares, lo cual también es algo en lo que realmente confío ahora, y no tengo que administrar manualmente las dependencias de pares en mis proyectos, lo cual es agradable. Así que sí, lo uso todos los días. Definitivamente soy un consumidor del proyecto. Genial. Sí, es bueno escuchar eso. ¿Puedes contarnos un poco sobre, sé que has estado trabajando en NPM incluso antes de que fuera adquirido por GitHub. ¿Puedes contarnos un poco sobre tu historia allí y cómo fue la adquisición por parte de GitHub y lo que puedas compartir, por supuesto? Puedo contarte un poco. En realidad, ha sido una adquisición muy buena para nosotros. Creemos que NPM ha encontrado un buen hogar con GitHub y también con la organización de Microsoft. Me uní al equipo de NPM Inc. aproximadamente 10 meses antes de que fuéramos adquiridos y estábamos trabajando bastante duro para actualizar y modernizar diferentes áreas de la empresa. Creo que eso también fue bastante atractivo para GitHub. Creo que vieron una buena combinación allí. Creo que era evidente que estas dos organizaciones deberían ser una. Sí, ha sido realmente emocionante, entre bastidores, comenzar a colaborar con GitHub y también ver cómo se ve el futuro de la hoja de ruta para las características que podemos ofrecer a la comunidad basándonos en esta estrecha colaboración. Así que hay muchas cosas en proceso de las que no puedo hablar en este momento, pero debería haber algunas noticias en otoño sobre muchas cosas que estamos haciendo con NPM y GitHub. Y

NPM Joke Abbreviations and Conclusion

Short description:

Nuestro equipo ha crecido y definitivamente podemos apoyar y mantener los proyectos de la CLI en el futuro. NPM tiene una lista de miles de abreviaturas de chistes divertidos. Mucha gente no sabe que NPM no es un acrónimo de Node Package Manager. Darcy estará disponible en Discord para más preguntas. ¡Gracias y adiós!

obviamente, la CLI seguirá mejorando. Y eso también ha sido una gran victoria para nosotros. Nuestro equipo ha crecido y definitivamente podemos apoyar y mantener los proyectos de la CLI en el futuro aquí por mucho tiempo. Genial. Genial. Vamos a desviarnos un poco. ¿Cuál es tu abreviatura de chiste favorita de NPM? ¿Chiste favorito? Sí. Entonces, en el sitio web, nunca dices Node Package Manager, ¿verdad? Dices NPM y luego siempre es algo diferente. ¿Cuál es tu favorito? Sí. Creo que uno de ellos es Ninja Pizza Monsters. Creo que es una referencia a las Tortugas Ninja Mutantes Adolescentes. Creo que ese es uno de los que he visto. Sé que hay miles de ellos. Esa lista vive en algún lugar de GitHub y la gente ha ido agregando a lo largo de los años. Y es una lista bastante larga de abreviaturas.

Sí. Sé que puedes enviar una solicitud de extracción. Y una vez he navegado por esa lista, y es realmente interminable y muy divertida. Siempre me gusta cuando las empresas, bueno, especialmente las grandes empresas, tienen este tipo de chistes y no se toman demasiado en serio. Es divertido ver eso. Sí, es bastante interesante. Mucha gente no sabe que NPM no es un acrónimo de Node Package Manager. Así que ahora tenemos una definición adecuada en el README, solo para que la gente lo sepa. Es una historia realmente interesante allí, y dejaré que la gente vaya a leer la historia del nombre real de NPM. Está ahí en el README de la CLI. Ahora estás tratando de generar más tráfico. Te estás robando todo nuestro tráfico. Espero que tu servidor esté listo. Creo que nos hemos quedado sin preguntas. Así que si alguien quiere hacerle más preguntas a Darcy, Darcy estará disponible en Discord. No está disponible en spatial chat. Darcy, muchas gracias por unirte a nosotros y espero verte de nuevo pronto y tal vez en persona. Eso sería increíble. Muchas gracias. Adiós. Adiós. Adiós. Adiós.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
JSNation Live 2021JSNation Live 2021
29 min
Making JavaScript on WebAssembly Fast
Top Content
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations in their JavaScript engines.Because of this optimization work, JavaScript is now running in many places besides the browser. But there are still some environments where the JS engines can’t apply those optimizations in the right way to make things fast.We’re working to solve this, beginning a whole new wave of JavaScript optimization work. We’re improving JavaScript performance for entirely different environments, where different rules apply. And this is possible because of WebAssembly. In this talk, I'll explain how this all works and what's coming next.
React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.
Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
Do you know what’s really going on in your node_modules folder? Software supply chain attacks have exploded over the past 12 months and they’re only accelerating in 2022 and beyond. We’ll dive into examples of recent supply chain attacks and what concrete steps you can take to protect your team from this emerging threat.
You can check the slides for Feross' talk here.

Workshops on related topic

React Day Berlin 2022React Day Berlin 2022
86 min
Using CodeMirror to Build a JavaScript Editor with Linting and AutoComplete
Top Content
WorkshopFree
Using a library might seem easy at first glance, but how do you choose the right library? How do you upgrade an existing one? And how do you wade through the documentation to find what you want?
In this workshop, we’ll discuss all these finer points while going through a general example of building a code editor using CodeMirror in React. All while sharing some of the nuances our team learned about using this library and some problems we encountered.
Node Congress 2023Node Congress 2023
109 min
Node.js Masterclass
Top Content
Workshop
Have you ever struggled with designing and structuring your Node.js applications? Building applications that are well organised, testable and extendable is not always easy. It can often turn out to be a lot more complicated than you expect it to be. In this live event Matteo will show you how he builds Node.js applications from scratch. You’ll learn how he approaches application design, and the philosophies that he applies to create modular, maintainable and effective applications.

Level: intermediate
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Testing Web Applications Using Cypress
WorkshopFree
This workshop will teach you the basics of writing useful end-to-end tests using Cypress Test Runner.
We will cover writing tests, covering every application feature, structuring tests, intercepting network requests, and setting up the backend data.
Anyone who knows JavaScript programming language and has NPM installed would be able to follow along.
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
Node Congress 2023Node Congress 2023
63 min
0 to Auth in an Hour Using NodeJS SDK
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.JS backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Table of contents- A quick intro to core authentication concepts- Coding- Why passwordless matters
Prerequisites- IDE for your choice- Node 18 or higher
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.