75 votes

Pourquoi certains paquets npm commencent-ils par @ ?

Y a-t-il quelque chose de différent dans les dépendances qui commencent par @ ?

Cela signifie-t-il ou implique-t-il quelque chose ? Je ne vois pas d'informations à ce sujet. Jetez un coup d'oeil à mon node_modules dossier : folder view

Fortawesome commence par @ et ne contient pas le typique fortawesome.css fichier. Alors, est-ce que c'est la même chose ? Ou est-ce que le @ indiquer quelque chose ?

C'est mon package.json :

{
  "name": "ng-frontend",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^5.2.0",
    "@angular/common": "^5.2.0",
    "@angular/compiler": "^5.2.0",
    "@angular/core": "^5.2.0",
    "@angular/forms": "^5.2.0",
    "@angular/http": "^5.2.0",
    "@angular/platform-browser": "^5.2.0",
    "@angular/platform-browser-dynamic": "^5.2.0",
    "@angular/router": "^5.2.0",
    "@fortawesome/fontawesome": "^1.1.4",
    "animate.css": "^3.6.1",
    "bootstrap": "^4.0.0",
    "core-js": "^2.4.1",
    "jasny-bootstrap": "^3.1.3",
    "jquery": "^3.3.1",
    "popper.js": "^1.12.9",
    "rxjs": "^5.5.6",
    "zone.js": "^0.8.19"
  },
  "devDependencies": {
    "@angular/cli": "~1.7.2",
    "@angular/compiler-cli": "^5.2.0",
    "@angular/language-service": "^5.2.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "^4.0.1",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~2.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~4.1.0",
    "tslint": "~5.9.1",
    "typescript": "~2.5.3"
  }
}

Cette question ne porte pas sur Angulaire .

36 votes

Cette question s'inscrit dans le cadre de "outils logiciels couramment utilisés par les programmeurs" donc je dirais que c'est flagrant. sur -Topic.

1 votes

Exactement ce que j'étais sur le point de dire, @Kos.

1 votes

C'est sur le sujet BTW. @ spécifie le regroupement et le scoping de paquets similaires. Les paquets précédés de @ sont des paquets scopés.

52voto

Ramesh Rajendran Points 1

Si le nom d'un paquet commence par @ alors il s'agit d'un paquet scopé. La portée est tout ce qui se trouve entre le @ y el barre oblique

@scope/project-name

Comment initialiser un paquet scopé

Pour créer un paquet scopé, il suffit d'utiliser un nom de paquet qui commence par votre portée.

{
  "name": "@username/project-name"
}

Pour plus de détails, veuillez consulter paquet scopé

y

Que signifie le symbole "@" dans l'instruction "import { Component } from '@angular/core' ;"?

1 votes

Je ne pense pas que @scope/project-name est un bon exemple, car le champ d'application peut être le nom du projet, puis un paquet au sein de ce projet. Par exemple @babel/core ... Babel est le projet et core est le paquet.

14voto

Gonzalo Matheu Points 3068

@ se référer à npm paquets scopés :

Lorsqu'ils sont utilisés dans les noms de paquets, les scopes sont précédés du symbole @ et suivis d'une barre oblique.

Les scopes sont un moyen de regrouper des paquets apparentés.

Par exemple, votre paquet.json contient des @angular/ les dépendances préfixées (@angular/animations, @angular/compiler-cli, etc.) qui signifient qu'elles sont sous angular l'étendue. Le code de toutes ces dépendances est sous @angular répertoire.

6 votes

Il n'y a pas de / ou l'équivalent dans les noms de la capture d'écran, donc je suppose que l'option @angular n'est pas réellement un paquet, mais une portée, et il y aura des sous-dossiers pour les paquets individuels ?

0 votes

@IMSoP Chaque paquet est stocké à node_modules/<pkg-name>. So @angular/cli` serait à l'intérieur du fichier @angular/cli dossier. Puisque le PO n'a pas ouvert le @angular vous ne pouvez pas voir le cli dossier intérieur.

11voto

Farhan Haque Points 416

Paquets avec @ désigne l'organisation. Dans ce cas, l'organisation est Fortawesome. Elle contient plusieurs paquets (vous pouvez les voir dans le dossier @fortawesome).

Comme décrit sur Page npm

La création d'une organisation sur npm vous donne une portée d'organisation sous laquelle vous pouvez avoir votre propre espace de nom pour les paquets.

Les lunettes de visée sont excellentes pour de nombreuses raisons, par exemple :

  • Maintenir un fork d'un paquet, par exemple @the-best/request.
  • Éviter le nom les conflits avec des noms populaires, par exemple @the-best/cat.
  • Amélioration de la découverte interne des paquets pris en charge par l'organisation (ils sont tous dans un seul espace de noms !).

J'espère que cela vous aidera.

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