Utilice la consulta npm para una mejor gestión de la dependencia

Disponible en npm CLI v8.16.0, query es un nuevo subcomando que expone una nueva y poderosa forma de inspeccionar y comprender las dependencias de su proyecto Node.js. Aporta una nueva y potente sintaxis de consulta basada en un patrón familiar: CSS. Así es, ahora puedes usar selectores CSS especiales con consultas npm para comprender mejor el árbol de dependencias de tu proyecto.

En este artículo, analizaremos por qué es importante verificar las dependencias, revisaremos ejemplos de consultas npm, profundizaremos en el método de esta nueva directiva y exploraremos diferentes formas de formatear y manipular su salida.

¿Por qué comprobar las dependencias?

Primero, ¿por qué es útil esto arbitrario? He aquí algunas razones por las que a la gente le gustaría tener una idea clara de sus dependencias:

  • Auditorías de seguridad: la identificación de las principales vulnerabilidades de seguridad (y la aplicación de parches posteriores) es fundamental para distribuir software moderno y de alta calidad. Las buenas herramientas dependen de las inspecciones circundantes para que la solución de estos problemas sea más fácil y rápida.

  • Estable: cuando un error en la dependencia de un proyecto causa problemas, es fundamental poder identificar rápidamente la versión afectada e implementar una solución.

  • Tamaño del paquete: potentes herramientas de verificación de dependencias pueden ayudar a los equipos de software en sus esfuerzos por enviar paquetes pequeños a los usuarios finales y mejorar el rendimiento.

  • Claro: tener una mejor comprensión de estos paquetes, su instalación y su propósito previsto ayuda a los ingenieros a tomar mejores decisiones y escribir mejor código.

ejemplo básico

Antes de profundizar en los hechos básicos de los argumentos de comando y los métodos basados ​​en CSS, Cómo ejecutar el Explorador de archivos como administrador en Windows 11 (5 formas). Aquí se proporcionan algunos ejemplos básicos para demostrar el poder y la precisión de este nuevo comando de consulta npm.

Auditoría de licencia

Supongamos que escribe software de código cerrado con fines de lucro y necesita asegurarse de que ninguna de sus dependencias se publique bajo una licencia GPL (lo que requiere que los usuarios intermedios también publiquen su software bajo una GPL o una licencia compatible). Puede haber algún problema con el Surface El paquete, cómo arreglar Spotify sigue fallando en Android (9 formas) puede usar el siguiente comando de consulta:

consulta npm "[licencia = GPL]"

BN, esto no pretende ser un asesoramiento legal; debe consultar a un abogado si tiene preguntas específicas sobre las licencias de software.

Verifique el script posterior a la instalación

Algunos programas ejecutan scripts después de la instalación y es posible que desee verificar estos scripts para asegurarse de que no estén haciendo nada malo. Con la consulta npm puede encontrar fácilmente cualquier dependencia, registre un script posterior a la instalación:

consulta npm ":attr(scripts, [postinstalación])"

Consulte los documentos de MDN para obtener un repaso sobre cómo funciona la función CSS :attr().

gramática

Las dependencias específicas para la selección de medios maestros son similares a la selección de ID de CSS. Cómo solucionar el error "Permitir que Chrome acceda a la red" en Windows 11. Este comando manifestará todas las copias de las instalaciones de lodash:

consulta npm "#lodash"

Si desea verificar que una versión específica, digamos 4.17.21, esté instalada, simplemente modifique el comando, así:

consulta npm "#[email protected]"

La consulta npm también admite el alcance de semver, siempre que utilice la versión más detallada del comando anterior (que toma un selector de atributo de nombre y la pseudoselección de semver):

consulta npm "[nombre=lodash]:semver(^4)"

Actualmente, estamos empezando a ver la flexibilidad que ofrece este enfoque basado en CSS. Solo hay un par de conceptos básicos más (descritos a continuación) que solo pueden convertir su experiencia previa a CSS en la creación de consultas que respondan preguntas muy específicas sobre el árbol de dependencia.

grupo dependiente

Los grupos de dependencia (dependencias de producción frente a dependencias de desarrollo, por ejemplo) representan una sintaxis de clase CSS familiar. A continuación se explica cómo consultar todas las dependencias de desarrollo:

consulta npm ".dev"

Esta consulta devuelve todas las dependencias transitivas del grupo de desarrollo. Cómo borrar el caché en Windows 11 (7 formas) Pero digamos que desea limitar la lista solo a elementos con dependencias directas de desarrollo.

Puede utilizar la pseudo-selección :root que representa su elemento y la combinación de elementos secundarios CSS, > para limitar el alcance de la consulta:

consulta npm ": raíz > .dev"

Pseudoselección especial

Además de los pseudoselectores CSS estándar (como :not(), :has(), :empty, etc.), npm query agrega algunos pseudoselectores especiales específicos del árbol de dependencia de la consulta:

  • :privado: selecciona dependencias marcadas como "privadas" en sus paquetes. archivo json ("privado": verdadero)

  • :deduped – Seleccionar dependencias de deduplicación

  • :overridden – La dependencia seleccionada ha sido anulada

  • :extraneous: dependencias seleccionadas, que pueden ser estados heredados de anteriores, ya que ya no dependen del árbol de dependencias de ningún paquete.

  • :missing: seleccione paquetes adicionales requeridos por las dependencias, pero que no se encuentran en el disco

  • :semver(<spec>) – Selecciona una dependencia que coincida con la especificación de semver especificada

  • :path(<path>) – Selecciona una dependencia que coincida con la ruta especificada

  • :type(<type>) – El tipo de dependencia a elegir, por ejemplo, git (para un repositorio de git), directorio (para un directorio local), etc.; consulte esta lista completa de tipos posibles

Familiarizado con ejemplos de CSS

Con todo el poder de la pseudo-selección especial mencionada anteriormente, CSS se puede utilizar para desentrañar algunas consultas muy poderosas que profundizan en los árboles de dependencia. Aquí hay un repaso de algunos conceptos de CSS que son particularmente útiles:

  • Combinadores: > Combina las dependencias de selección que usamos anteriormente para hacer coincidir las selecciones siempre que sean descendientes directos (hijos) de las selecciones. La 组合是相似的,但是所有的后裔(儿童、孙子孙女和外). 的~combinación de se puede utilizar para seleccionar hermanos.

  • Selección de atributos: la selección de atributos, como [clave = valor], selecciona una dependencia que tiene una clave de atributo establecida en valor. Esto solo se aplica a los valores de cadena package.json; para una selección de atributos más poderosa, use:attr () Función de clúster

  • Selector avanzado: * es un selector especial, como en CSS, que selecciona todas las dependencias. Se pueden utilizar múltiples selecciones de secuencia en conjunto, seleccionando cualquier lado de la selección que produce el resultado de esa unión.

Formatear y manipular la salida

De forma predeterminada, la consulta npm genera una imagen grande y formatea la línea de contenido con una sangría de dos espacios horizontalmente. Esto es perfecto para enviar archivos JSON de datos para usarlos en otros programas, pero no es excelente para las personas que disfrutarán leyendo el resultado.

Uso en la terminal con jq

jq es un procesador JSON rápido y popular que normalmente se usa directamente en la línea de comando. Hay muchos tutoriales y ejemplos excelentes en línea sobre cómo usar jq, incluido el manual oficial de jq, pero aquí hay un ejemplo rápido para demostrar su poder.

Reutilicemos todas las dependencias seleccionadas en nuestra consulta anterior en el artículo, usando un script postinstalación (consulta npm ":attr(scripts, [postinstall])"), esta vez solo mostrando sus nombres, versiones y placas de ruta:

consulta npm ":attr(scripts, [postinstalación])" | jq'.[] | "\(.nombre)@\(.versión) - \(.ruta)"'

Aquí hay algunos resultados de muestra:

"[email protected] - /workspaces/proutils.dev/node_modules/esbuild" 
"[email protected] - /workspaces/proutils.dev/node_modules/svelte-preprocess"

Uso de la solución

Para un control aún mayor, así como la capacidad de ejecutar procesamiento y análisis avanzado de resultados, NPM ha lanzado un paquete llamado Trees para usar dentro de un programa Node.js. Tiene una API basada en confirmaciones y admite las mismas opciones de CSS que la versión CLI. Para obtener más detalles sobre qué usar, consulte la documentación oficial.

Cómo mejorar la consulta npm de gestión de dependencias

En este artículo, hemos echado un vistazo rápido al nuevo y potente comando CLI de consulta npm. Con una consulta bien diseñada, puede implementar más fácilmente árboles de dependencia profundos.

Hay muchos casos de uso, incluida una gran lista de archivos de consulta npm. Para que su mente se ponga en marcha sobre las posibilidades, aquí hay algunos casos de uso más redactados para plantear preguntas que los equipos de desarrollo pueden tener sobre su pila de Dependencias. También se proporcionan consultas que ayudarán a responder estas preguntas:

  • necesito correr

    instalación npm

    ¿Porque perdí a algunos compañeros de equipo que confiaban en mí para unirme?

    • consulta npm "*: faltante"

  • Si hay algún paquete depende de ambos.

    lodash

    y

    guion bajo

    ?

    • consulta npm "*:has(> #lodash ~ #underscore)"

  • ¿Árbol de dependencia que envuelve nodos en hojas?

    • consulta npm " :not( :tiene(> *))"

¿Qué otras consultas útiles se le podrían ocurrir?

Supongo que te gusta

Origin blog.csdn.net/weixin_47967031/article/details/132939167
Recomendado
Clasificación