使用表情符号?♂️?♀️的节点依赖性之间的差异
节点依赖关系有不同的形式: 依赖
, devDependencies
, peerDependencies
, bundleDependencies
和 optionalDependencies
。
我们将在这篇博文中解决前三个问题,这些问题对我们最感兴趣,但我会简要解释一下 bundleDependecies
和 optionalDependencies
是。
-
bundleDependencies
:如果运行npm pack,这些依赖项是与库一起捆绑的依赖项。来自人们@npm自己:
“这定义了一个包名称数组,这些包名称将在发布包时捆绑在一起。”
-
optionalDependencies
:是依赖项,它们是可选的。我会让自己离开?。如果无法找到,则此处安装的依赖项不会使您的库安装失败。我认为它们是依赖项的备用版本而不是那么严格。来自你的朋友@npm:
“如果可以使用依赖项,但是如果无法找到或无法安装,则希望npm继续,那么您可以将它放在optionalDependencies对象中。”
?请记住,您必须指定依赖项或可选依赖项,但不能同时指定?
“optionalDependencies中的条目将覆盖依赖项中相同名称的条目,因此通常最好只放在一个位置。”
有了这个,让我们开始讨论节点给我们的其他三种依赖关系。
如果你遇到过 的package.json
在你的编程日,你可能已经看过了 依赖
, devDependencies
和/或甚至可能是他们的表兄弟 peerDependencies
对象,a.k.a?Dependencies。
……得到它,得到它?…因为它听起来像?……好吧,我现在就停止……?
最后一个,当您尝试安装x包时,通常会出现警告的风格。通常采用以下形式:
包'x'的未满足的peerDependency为'y@1.0.0'
您可能想知道,这些事情甚至是如何相关的?让我们通过创建我们自己的“制作汉堡?”库来看看它们中的所有三个。
//伪package.json与一些emojis {“name”:“制作一个汉堡”,“版本”:“1.0.0”,“描述”:“?lib”,“main”:“index.js” ,“作者”:“?♂️”,“许可证”:“MIT”,“依赖”:{“?”:“meat@2.0.0”},“devDependencies”:{“?”:“egg- yolk@1.OO“},”peerDependencies“:{”?“:”> = bread@1.x“}}
实际上,这可以转化为……
- 依赖:嘿,为了使这个?库(a.k.a运行一个汉堡)你必须有?手头。图书馆在它上面运行……(当然,除非你正在制作素食汉堡??)。
一个很好的例子就是这样的 VUE
, 应对
, 反应母语
, eslint
(如果制作可共享的eslint-config文件)等。
- devDependencies:哟,在开发时你最好有一个?手头,因为这样可以简化这个过程…(并为你的食物赋予味道?……如果你不做正确的话,可能还有沙门氏菌……?)。
处理原始代码的修改/操作/测试的包是这种依赖的一个很好的例子: @通天/ *
, 的WebPack
, 笑话
等
- peerDependencies:bro / bro-ette(…??),不要试图使这个?库没有一些?也在等于或大于版本1.x …(版本无麸质,正常,整体 – 好吧……好吧,这个实际上是一个非常糟糕的笑话)。
最后一个是最有趣的一个。我们指定 peerDependencies
让您的库的用户知道他们必须安装此另一个依赖项的最低版本,因为整个库在它们上运行。换一种说法:
包'x'还取决于安装包'y @ 1'。
只是做一个完整的循环,?如果我们要添加 optionalDepedencies
和 bundleDependencies
到这个图书馆他们将采取以下形式:
{“name”:“制作汉堡”,“版本”:“1.0.0”,“描述”:“?lib”,“main”:“index.js”,“作者”:“?♂ ️“,”license“:”MIT“,”依赖“:{”?“:”meat@2.0.0“},”devDependencies“:{”?“:”egg-yolk@1.OO“},” peerDependencies“:{”?“:”> = bread@1.x“}”optionalDependencies“:{”?“:”lettuce@3.2.x“},”bundleDependencies“:(”?“,”?“)}
我想就是这样,我希望这对我们有所帮助,或者至少是有趣的。
如果你想了解更多关于节点依赖关系和package.json里面的所有好东西,不要忘记看看npm-docs,因为它充满了有用的信息。
感谢阅读,如果不清楚,请给我发表评论。欢迎所有反馈。
注意:当我写完这篇文章时,我意识到这是一个更好的例子 devDependencies
本来应该是绞肉机(?),但我找不到表情符号?。