Почему некоторые пакеты npm начинаются с @?

Есть ли что-то другое в отношении зависимостей, которые начинаются с @?

Означает ли это или подразумевает что-то? Я не вижу никакой информации об этом. Взгляните на мою папку node_modules: folder view

Fortawesome начинается с @ и не содержит типичного файла fortawesome.css. Так это же самое? Или @ указывает что-то?

Это мой 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"
  }
}

Этот вопрос не о Угловом.

Ответы

Ответ 1

Если имя пакета начинается с @, то это пакет с областью. Область - это все, что находится между символом @ и косой чертой

@scope/project-name

Как инициализировать выделенный пакет

Чтобы создать пакет с областью действия, вы просто используете имя пакета, которое начинается с вашей области.

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

Более подробная информация, пожалуйста, посетите областной пакет

а также

Что означает символ "@" в "import {Component) из" @angular/core "; выражение?

Ответ 2

@ обратитесь к пакетам с областью npm:

При использовании в именах пакетов областям предшествует символ @и сопровождается косой чертой

Области - это способ группировки связанных пакетов вместе.

Например, ваш package.json содержит некоторые зависимости @angular/ префиксы (@угловые/анимации, @angular/compiler-cli и т.д.), Что означает, что они находятся под angular. Код всех этих зависимостей находится в @angular каталоге.

Ответ 3

пакеты с @ обозначают организацию. В этом случае организация Fortawesome. Он содержит несколько пакетов (вы можете увидеть его внутри папки @fortawesome).

Как описано на странице npm

Создание организации в npm дает вам область "Организация", в которой вы можете иметь собственное пространство имен для пакетов.

Области отлично подходят по многим причинам, например:

  • Поддерживайте вилку пакета, например @the-best/request.
  • Избегайте именных споров с популярными именами, например @the-best/cat.
  • Улучшение внутреннего обнаружения поддерживаемых организацией пакетов (все они находятся в одном пространстве имен!)

Надеюсь, это поможет.