在创建Angular 2库npm包时,我应该对Angular 2依赖项使用peerDependencies还是依赖项?

Joh*_*Siu 8 npm angular

目前,当我为Angular 2创建npm包时,主要是Angular 2服务,我使用peerDependencies如下:

  "peerDependencies": {
    "@angular/core": "^2.0.0",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "^0.6.6"
  }
Run Code Online (Sandbox Code Playgroud)

我没有使用,dependencies因为我不想让我的包裹拉过来npm install.正如我所期望的那样,目标应用程序是Angular 2.

并将编译我的包所需的所有依赖项放入devDependencies:

  "devDependencies": {
    "@angular/core": "^2.0.0",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "^0.6.6",
    "typescript": "*",
    "typings": "*"
  }
Run Code Online (Sandbox Code Playgroud)

但是,我应该使用dependenciespeerDependencies

我主要关注的是使用该软件包的应用程序.它们是否会影响消费应用程序的构建过程?

或者我做错了,应该切换回去dependencies

小智 7

来自https://nodejs.org/en/blog/npm/peer-dependencies/

同伴依赖

我们需要的是一种在插件和它们的主机包之间表达这些"依赖关系"的方法.一些说法,"我只在插入我的主机软件包的1.2.x版本时工作,所以如果你安装我,请确保它与兼容主机一起使用." 我们称这种关系为同伴关系.

正如我所解释的那样,对等依赖关系只是告诉使用你的包的人,如果他们没有安装对等的依赖关系,它将无法工作.