tutorial soljson smart remix org optimize online false español curso 59dbf8f1 javascript angular npm

javascript - soljson - smart contracts ethereum



¿Cuál es el significado del prefijo "at"(@) en los paquetes npm? (2)

Básicamente, hay dos tipos de módulos en npm, que son:

  • Módulos globales: son módulos que siguen la convención de nomenclatura que existe hoy en día. Necesitas require(''foo'') y hay mucho regocijo. Son propiedad de una o más personas a través del npm install XYZ .

  • Módulos con ámbito: estos son módulos nuevos que están "con ámbito" bajo el nombre de una organización que comienza con @ el nombre de la organización, una barra oblicua y finalmente el nombre del paquete, por ejemplo, @someOrgScope/packagename . Los ámbitos son una forma de agrupar paquetes relacionados, y también afectan algunas cosas sobre la forma en que npm trata el paquete.

Un paquete con ámbito se instala al hacer referencia a él por nombre, precedido por un símbolo @, en npm install:

npm install @myorg/mypackage

ver también

Esta pregunta ya tiene una respuesta aquí:

En la documentación de Angular Component Router, me topé con un comando npm que nunca había visto antes y no entiendo lo que está sucediendo:

npm install @angular/router --save

¿Cuál es el significado de @angular/router ?

¿Es toda la cadena un nombre de paquete? Pero luego no encuentro ese paquete cuando uso la búsqueda en npmjs.com . Y también la búsqueda de línea de comando no devuelve dicho paquete:

npm search @angular/router :No match found for "@angular/router"

Entonces, ¿es el @angular/ algún tipo de mecanismo de prefijo en npm? Y, ¿cómo funciona?


Esta es una nueva característica de NPM llamada ''paquetes con ámbito'', que efectivamente permite que los paquetes NPM tengan espacios de nombres. Cada usuario y organización en NPM tiene su propio alcance, y son las únicas personas que pueden agregarle paquetes.

Esto es útil por varias razones:

  • Permite a las organizaciones dejar en claro qué paquetes son ''oficiales'' y cuáles no.
    • Por ejemplo, si un paquete tiene el alcance @angular , usted sabe que fue publicado por el equipo central de Angular.
  • El nombre del paquete solo debe ser exclusivo del alcance en el que se publica, no todo el registro.
    • Por ejemplo, el nombre del paquete http ya está en el repositorio principal, pero Angular también puede tener @angular/http .

La razón por la que los paquetes de ámbito no aparecen en la búsqueda pública es porque muchos de ellos son paquetes privados creados por organizaciones que utilizan los servicios pagos de NPM, y no se sienten cómodos abriendo la búsqueda hasta que puedan estar totalmente seguros de que no hará público todo lo que no debería ser público; desde una perspectiva legal, esto es bastante comprensible.

Para obtener más información, consulte los documentos de NPM y los documentos angulares .

EDITAR: ¡Parece que los paquetes de ámbito público ahora se muestran correctamente en la búsqueda!