[译] Node 模块中的 peer dependencies 是什么?
source link: http://mp.weixin.qq.com/s?__biz=MzI0MDYzOTEyOA%3D%3D&%3Bmid=2247484348&%3Bidx=3&%3Bsn=45ef5c72aab7b0634becc2fca7406743
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
原文:https://flaviocopes.com/npm-peer-dependencies/
在某些 package.json 文件中,你可能见到过一些这样的配置行:
{ //... "peerDependencies": { "libraryName": "1.x" } }
dependencies
及 devDependencies
常见,而 peerDependencies
并不是。
dependencies
是你的项目所依赖的包。
devDependencies
是开发阶段所需要的包。比如说像 Jest 这样的测试框架或 Babel、ESLint 等其他库。
在以上两种情况中,当你安装一个包时,其 dependencies 和 devDependencies 会被 npm 自动安装。
peerDependencies
则有所不同,它们不会被自动安装。
当一个依赖项 c 被列在某个包 b 的 peerDependency 中时, 它就不会被自动安装 。取而代之的是,包含了 b 包的代码库 a 则必须将对应的依赖项 c 包含为其依赖。
如果运行 npm install
时找不到该依赖, npm
会作出警告,正如例子中所示:
a/package.json
{ //... "dependencies": { "b": "1.x" } }
b/package.json
{ //... "peerDependencies": { "c": "1.x" } }
因此,在包 a 中,必须添加 c 作为一个依赖项,这样当你安装 b 包时,npm 就不会告警了(代码运行时也不会失败):
a/package.json
{ //... "dependencies": { "b": "1.x", "c": "1.x" } }
要注意依赖项的版本必须是兼容的,如果一个 peerDependency 被标为 2.x
,你就不能安装 1.x
或其他不兼容的版本。该规定遵循 https://flaviocopes.com/npm-semantic-versioning/ 标准。
--End--
查看更多前端好文
请搜索 fewelife 关注公众号
转载请注明出处
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK