Why do some npm packages start with @?

Javascriptnode.jsNpm

Javascript Problem Overview


Is there anything different about the dependencies that start with @?

Does that mean or imply something? I don't see any info about that. Take a look at my node_modules folder: [![folder view][1]][1]

Fortawesome starts with @ and does not contain the typical fortawesome.css file. So is it the same? Or does the @ indicate something?

This is my 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"
  }
}

This question is not about Angular. [1]: https://i.stack.imgur.com/fCo2s.png

Javascript Solutions


Solution 1 - Javascript

>If a package's name begins with @, then it is a scoped package. The scope is everything in between the @ and the slash

@scope/project-name

How to Initialize a Scoped Package

To create a scoped package, you simply use a package name that starts with your scope.

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

More details, Please visit scoped package

and

https://stackoverflow.com/questions/37372816/what-does-symbol-mean-in-import-component-from-angular-core-statem

Solution 2 - Javascript

@ refer to npm scoped packages:

> When used in package names, scopes are preceded by an @ symbol and followed by a slash

Scopes are a way of grouping related packages together.

For instance, your package.json contains some @angular/ prefixed dependencies (@angular/animations, @angular/compiler-cli, etc) which means that they are under angular scope. The code of all those dependencies is under @angular directory.

Solution 3 - Javascript

packages with @ denotes the organisation. In this case the organisation is Fortawesome. It contains multiple packages (you can see it inside @fortawesome folder).

As described on npm page

> Creating an Organization on npm gives you an Organization scope under which you can have your own namespace for packages.

Scopes are great for many reasons, for example:

  • Maintain a fork of a package, e.g. @the-best/request.
  • Avoiding name disputes with popular names, e.g. @the-best/cat.
  • Improving internal discovery of Organization-supported packages (they're all in a single namespace!)

Hope that helps.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOscarView Question on Stackoverflow
Solution 1 - JavascriptRamesh RajendranView Answer on Stackoverflow
Solution 2 - JavascriptGonzalo MatheuView Answer on Stackoverflow
Solution 3 - JavascriptFarhan HaqueView Answer on Stackoverflow