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

时间:2018-03-07 12:22:36

标签: javascript node.js 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"
  }
}

这个问题不是关于 Angular

3 个答案:

答案 0 :(得分:23)

  

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

@scope/project-name

如何初始化Scoped包

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

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

更多详情,请访问scoped package

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

答案 1 :(得分:7)

@ 请参阅npm scoped packages

  

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

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

例如,您的 package.json 包含一些@angular/前缀依赖项(@ angular / animations,@ angular / compiler-cli等),这意味着它们位于{{1 }} 范围。所有这些依赖项的代码都在angular目录下。

答案 2 :(得分:6)

@

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

npm page

所述
  

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

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

  • 维护包裹的叉子,例如@的最佳/请求。
  • 避免名字 与流行名称的争议,例如@的最佳/猫。
  • 改进组织支持的软件包的内部发现(它们都在一个命名空间中!)

希望有所帮助。