Bienvenidos a todos. En esta charla, revisaremos algunas ideas sobre cómo desbloquear el poder del gráfico de dependencias, junto con algunos ejemplos de cómo aprovecharlo usando el cliente de Vault. Soy Rui Adorno, soy ingeniero fundador en Vault, donde estamos construyendo el futuro de los paquetes de JavaScript. Antes de eso, trabajé en NPM Inc. y eventualmente me mudé al equipo de NPM CLI en GitHub. Antes de unirme a Vault, pasé dos años en Google trabajando con el SDK de JavaScript, lo que me dio otra ronda de experiencia como usuario final antes de volver al mundo de la cadena de suministro de JavaScript. He estado trabajando en el espacio de gestión de paquetes de Node.js durante años, y lo que quiero compartir hoy proviene de esa experiencia.
Bueno, las dependencias son los bloques de construcción de los proyectos de JavaScript, pero la estructura de datos resultante, un gráfico que forman, ha sido históricamente infrautilizada por el ecosistema de herramientas. Comprender cómo se relacionan estas dependencias y por qué incluso existen sigue siendo sorprendentemente difícil. Cada proyecto tiene dependencias. Cada vez que ejecutas una instalación, el gestor de paquetes resolverá la dependencia, creando una estructura de datos de gráfico que debe resolverse, desduplicarse, antes de finalmente escribir todos los archivos en el disco. Pero después de todo, la estructura de datos del gráfico se ignora para casi todos los demás comandos. Y esta estructura de datos del gráfico debería tratarse como un ciudadano de primera clase.
¿Cómo se ve una herramienta que trata la estructura de datos del gráfico como un ciudadano de primera clase? Bueno, deberías exponer esa estructura de gráfico, luego hacer uso de una sintaxis para permitir consultar el contenido de la estructura, y finalmente, usar la comprensión de la estructura del gráfico en todo tipo de operaciones del proyecto. Así es como realmente se ve el gráfico de dependencias. No una lista plana de carpetas en Node modules, sino probablemente un gráfico cíclico. En este caso, mi aplicación depende de Express, React y TypeScript. Express depende de BodyParser, XSAP, y así sucesivamente. Y cuando hacemos zoom, nos damos cuenta de que cada nodo lleva su metadato completo, seguridad, relaciones, todo debería ser consultable. Y esto es lo que vive dentro de cada nodo. No solo el nombre de la versión, sino también hashes de integridad, fechas de publicación, información del autor, detalles de seguridad, Cuando mantienes el gráfico, todos estos metadatos son consultables. Puedes preguntar, muéstrame todos los paquetes publicados antes de una cierta fecha o muéstrame todo por un autor específico, porque todo está ahí en el gráfico. Aquí, quería introducir este concepto de la sintaxis del selector de dependencias, que es algo que hemos estado usando durante mucho tiempo. Aquí, quería introducir este concepto de la sintaxis del selector de dependencias. Lo llamamos DSS para abreviar. Está basado en selectores CSS, y nos ayuda a responder preguntas complejas sobre dependencias, su relación y metadatos. Puedes ver cómo encaja muy bien con el modelo CSS. Comencemos con algunos ejemplos concretos. Es más fácil de visualizar. Comenzando aquí con el operador estrella, solo está seleccionando todos los nodos en el gráfico.
Comments