Dans le documentation du routeur à composants angulaires je viens de trébucher sur une commande npm que je n'ai jamais vue auparavant et je ne comprends pas ce qui se passe:
npm install @angular/router --save
Quel est le sens de @angular/router
?
La chaîne entière est-elle un nom de package? Mais alors je ne trouve pas ce paquet quand j'utilise la recherche sur npmjs.com . Et aussi la recherche en ligne de commande ne retourne aucun paquet de ce type:
npm search @angular/router
:No match found for "@angular/router"
Alors, le @angular/
est-il une sorte de mécanisme de préfixe dans npm? Et comment ça marche?
Il s'agit d'une nouvelle fonctionnalité de NPM appelée "paquets étendus", qui permet effectivement aux paquets NPM d'être nommés. Chaque utilisateur et chaque organisation sur NPM a sa propre portée, et ils sont les seuls à pouvoir y ajouter des packages.
Ceci est utile pour plusieurs raisons:
@angular
, vous savez qu'il a été publié par l'équipe principale Angular.http
est déjà pris dans le référentiel principal, mais Angular peut également avoir @angular/http
.La raison pour laquelle les paquets périmés n'apparaissent pas dans la recherche publique c'est parce que beaucoup d'entre eux sont des paquets privés créés par des organisations utilisant les services payants de NPM, et ils ne sont pas à l'aise pour lancer la recherche tant qu'ils ne le peuvent pas. être totalement certain qu'ils ne rendront pas public tout ce qui ne devrait pas l'être - d'un point de vue juridique, cela est assez compréhensible.
Pour plus d'informations, voir les documents NPM et les documents angulaires .
EDIT: Il semble que les paquets publics sont maintenant correctement affichés dans la recherche!
En gros, il y a deux types de modules sur npm, ils sont -
Modules globaux - ce sont des modules qui suivent la convention d'appellation existante. Vous require('foo')
et il y a beaucoup de joie. Ils appartiennent à une ou plusieurs personnes via la commande npm install XYZ
.
Modules Scoped - il s’agit de nouveaux modules qui sont "scoped" sous un nom d’organisation commençant par @
le nom de l’organisation, une barre oblique et enfin le nom du package, par exemple. @someOrgScope/packagename
. Les portées permettent de regrouper des packages associés et affectent également la façon dont npm traite le package.
Un paquet scoped est installé en le référençant par son nom, précédé d’un symbole @, dans l’installation npm:
npm install @myorg/mypackage
voir également