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

Osc*_*car 34 javascript node.js npm

开头的依赖项有什么不同@吗?

这是意味着还是暗示某些东西?我没有看到任何关于此的信息.看看我的node_modules文件夹: 文件夹视图

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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这个问题与Angular无关.

Ram*_*ran 28

如果包的名称以@开头,则它是一个范围包.范围是@斜杠之间的所有内容

@scope/project-name
Run Code Online (Sandbox Code Playgroud)

如何初始化一个Scoped包

要创建范围包,只需使用以范围开头的包名称.

{
  "name": "@username/project-name"
}
Run Code Online (Sandbox Code Playgroud)

更多细节,请访问范围包

"@"/"核心"的"import {Component}"中的"@"符号是什么意思;" 声明?


Gon*_*heu 9

@参考npm 范围包:

在包名称中使用时,作用域前面带有@符号,后跟斜杠

范围是一种将相关包分组在一起的方法.

例如,你的package.json包含一些带@angular/前缀的依赖项(@ angular/animations,@ angular/compiler-cli等),这意味着它们在angular范围之内.所有这些依赖项的代码都在@angular目录下.

  • 屏幕截图中的名称中没有任何`/`s或等价物,所以我猜测`@ angular`实际上不是一个包,而是一个范围,并且各个包都会有子文件夹? (6认同)

Far*_*que 7

带有@的包表示组织.在这种情况下,该组织是Fortawesome.它包含多个包(您可以在@fortawesome文件夹中看到它).

npm页面所述

在npm上创建组织会为您提供一个组织范围,您可以在该范围内拥有自己的包名称空间.

范围很广,原因有很多,例如:

  • 保持包的分叉,例如@ the-best/request.
  • 避免与流行名称的名称争议,例如@ the-best/cat.
  • 改进组织支持的包的内部发现(它们都在一个命名空间中!)

希望有所帮助.