490 votes

Quel est le sens de la « at » (@) préfixe sur les paquets de la NGP ?

Dans la Composante Angulaire, la documentation du Routeur je viens de tombé sur un mnp commande je n'ai jamais vu avant et je ne comprends pas ce qui se passe:

npm install @angular/router --save

Quel est le sens de l' @angular/router?

Est l'ensemble de la chaîne de caractères d'un nom de package? Mais alors je n'ai pas trouver ce paquet quand j'ai utiliser la fonction de recherche sur npmjs.com. Et aussi la ligne de commande, la recherche ne renvoie aucun de ces paquets:

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

Donc, est l' @angular/ une sorte de préfixe mécanisme de la ngp? Et comment ça fonctionne?

517voto

Joe Clay Points 14166

C'est une nouvelle fonctionnalité de la NGP appelé "l'étendue des paquets", qui permettent aux MNP paquets pour être préfixée. Chaque utilisateur et de l'organisation sur le mécanisme national de prévention de leur propre champ d'application, et ils sont les seuls gens peuvent ajouter des packages.

C'est utile pour plusieurs raisons:

  • Il permet aux organisations de préciser quels paquets sont "officielles" et ceux qui ne le sont pas.
    • Par exemple, si un paquet a la portée @angular, vous savez qu'il a été publié par l'Angulaire de l'équipe de base.
  • Le nom du package ne doit être unique à la portée il est publié, et non la totalité de registre.
    • Par exemple, le nom du package http est déjà pris dans le dépôt principal, mais Angulaire est capable d'avoir des @angular/http .

La raison que l'étendue des paquets n'apparaissent pas dans la recherche publique est parce que beaucoup d'entre eux sont privés de paquets créés par les organisations à l'aide des MNP services payants, et ils ne sont pas à l'aise de l'ouverture de la recherche vers le haut jusqu'à ce qu'ils puissent être tout à fait certain qu'ils ne vont pas faire quelque chose de public qui ne doit pas être public - à partir d'un point de vue juridique, c'est assez compréhensible.

Pour plus d'informations, voir le MNP docs et l' Angulaire docs.

EDIT: Il semble que le public l'étendue des paquets maintenant s'afficher correctement dans votre recherche!

103voto

Pardeep Jain Points 4603

Fondamentalement, il existe deux types de modules de mnp, qui sont -

  • Les modules globaux - ce sont des modules qui suivent la convention de nommage qui existe aujourd'hui. Vous require('foo') et il y a beaucoup de joie. Ils sont détenus par une ou plusieurs personnes par le biais de l' npm install XYZ commande.

  • L'étendue des modules - ce sont de nouveaux modules sont limités sous le nom de l'organisation qui commence avec un @et suivi d'une barre oblique, par exemple, @somescope/somepackagename . Les étendues sont un moyen de regrouper les paquets liés ensemble, et aussi affecter peu de choses sur la façon dont mnp traite le paquet.

Une étendue de package est installé par le référencement de par son nom, précédé par un symbole@, dans npm install:

npm install @myorg/mypackage

voir aussi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X