Comprender el package npm @ -prefix: @ angular / enrutador

En la documentation del Enrutador de componentes angulares, me tropecé con un command 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 ?

¿Toda la cadena es un nombre de package? Pero luego no encuentro ese package cuando uso la búsqueda en npmjs.com . Y también la búsqueda de command-line no devuelve dicho package:

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

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

Esta es una nueva característica de NPM llamada 'packages de scope'. Permiten efectivamente que los packages de NPM tengan un espacio de nombres: cualquier package que comience con @angular/ se agrupara en una carpeta @angular en sus node_modules .

La razón por la cual los packages de scope no aparecen en la búsqueda pública se debe a que muchos de ellos son packages privados creados por organizaciones que utilizan los services pagados de NPM, y no se sienten cómodos abriendo la búsqueda hasta que pueden estar totalmente seguros de que no están va a hacer algo público que no debería ser público: desde una perspectiva legal, esto es bastante comprensible.

Para get más información, consulte los documentos npm o los documentos angulares.

Básicamente hay dos types de modules de npm que son:

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

  • Módulos abarcados: estos son modules nuevos que tienen un "scope" bajo un nombre de organización que comienza con un @ y seguido de una barra diagonal, por ej. @somescope/somepackagename . Los ámbitos son una forma de agrupar packages relacionados, y también afectan algunas cosas sobre la forma en que npm trata el package.

Un package de ámbito se instala haciendo reference a él por su nombre, precedido por un símbolo @, en la installation de npm:

 npm install @myorg/mypackage 

ver también