为什么有些 npm 包以@开头?

@开始的依赖关系有什么不同吗?

这是什么意思还是暗示什么? 我没看到任何相关信息,看看我的 node_modules文件夹: folder view

Fortawely @开头,不包含典型的 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"
}
}

这个问题与 角度无关。

14741 次浏览

@ 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.

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.

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

What does "@" symbol mean in "import { Component } from '@angular/core';" statement?