Dans la documentation du routeur de composants angulaires, je suis juste tombé sur une commande npm que je n'avais jamais vue auparavant et je ne comprends pas ce qui se passe:
npm install @angular/router --save
Quelle est la signification de @angular/router
?
La chaîne entière est-elle un nom de package? Mais je ne trouve pas ce package lorsque j'utilise la recherche sur npmjs.com . Et aussi la recherche en ligne de commande ne retourne pas un tel paquet:
npm search @angular/router
:No match found for "@angular/router"
Est-ce que le @angular/
mécanisme de préfixe est dans npm? Et comment ça marche?
javascript
angular
npm
jbandi
la source
la source
npm help scope
Réponses:
Il s'agit d'une nouvelle fonctionnalité de NPM appelée «packages étendus», qui permet effectivement aux packages NPM d'être espacés de noms. Chaque utilisateur et organisation sur NPM a sa propre portée, et ce sont les seules personnes qui peuvent y ajouter des packages.
Ceci est utile pour plusieurs raisons:
@angular
, vous savez qu'il a été publié par l'équipe de base Angular.http
est déjà pris dans le référentiel principal, mais Angular peut également l'avoir@angular/http
.La raison pour laquelle les packages étendus n'apparaissent pas dans la recherche publique est parce que beaucoup d'entre eux sont des packages privés créés par des organisations utilisant les services payants de NPM, et ils ne sont pas à l'aise d'ouvrir la recherche jusqu'à ce qu'ils puissent être totalement certains qu'ils ne le sont pas va rendre public tout ce qui ne devrait pas l'être - d'un point de vue juridique, c'est assez compréhensible.
Pour plus d'informations, consultez les documents NPM et les documents Angular .
EDIT: Il semble que les packages de portée publique s'affichent désormais correctement dans la recherche!
la source
Fondamentalement, il existe deux types de modules sur npm, ils sont -
Modules globaux - ce sont des modules qui suivent la convention de dénomination qui existe aujourd'hui. Vous
require('foo')
et il y a beaucoup de joie. Ils appartiennent à une ou plusieurs personnes via lanpm install XYZ
commande.Modules étendus - ce sont de nouveaux modules qui sont "étendus" sous un nom d'organisation qui commence par
@
le nom de l'organisation, une barre oblique et enfin le nom du package, par exemple@someOrgScope/packagename
. Les étendues sont un moyen de regrouper des packages associés et affectent également certaines choses sur la façon dont npm traite le package.Un package de portée est installé en le référençant par son nom, précédé d'un @ -symbol, dans l'installation de npm:
voir également
http://blog.nodejitsu.com/a-summary-of-scoped-modules-in-npm/
https://docs.npmjs.com/misc/scope
la source