Node.js 我是否应该使用“&燃气轮机=&引用;(大于或等于)用于节点包的package.json引擎字段中的节点或npm版本?
该软件包是使用Node.js 我是否应该使用“&燃气轮机=&引用;(大于或等于)用于节点包的package.json引擎字段中的节点或npm版本?,node.js,npm,package.json,semantic-versioning,Node.js,Npm,Package.json,Semantic Versioning,该软件包是使用节点(当前为12.18.2)的版本在本地开发的。在下,我将node设置为12.18.2,但我注意到使用=是很常见的(请参阅)-如何决定是否“放松”我的节点版本?我也在考虑~12.18.2 好处:如果包消费者使用的节点版本仍然适用于包,则不会收到警告,尽管该版本高于包.json中指定的版本 潜在风险:是否担心未来版本的节点会有破坏性的更改或弃用,从而影响我的软件包 我对在npm版本中使用=有同样的问题。好问题-pkg作者也指定了节点引擎。例如1)运行npm showeslint@7
节点
(当前为12.18.2
)的版本在本地开发的。在下,我将node
设置为12.18.2
,但我注意到使用=
是很常见的(请参阅)-如何决定是否“放松”我的节点版本?我也在考虑~12.18.2
好处:如果包消费者使用的节点
版本仍然适用于包,则不会收到警告,尽管该版本高于包.json
中指定的版本
潜在风险:是否担心未来版本的节点
会有破坏性的更改或弃用,从而影响我的软件包
我对在
npm
版本中使用=
有同样的问题。好问题-pkg作者也指定了节点引擎。例如1)运行npm showeslint@7.4.0engines.node
返回^10.12.0 | |>=12.0.0
2)npm显示npm@6.14.6engines.node
返回=6.2.0 | | 8 | |>=9.3.0
。鉴于SemVer本质上是一个合同,用于向用户传达变更的影响,以及事情是否会起作用。。。在我看来,指定~12.18.2
似乎很现实(除非证明不是这样)。指定=
可能太不现实了,因为您正在与用户通信,此pkg将起作用。。。。。。所有未来版本的nodejs。如果你不知道你的pkg是否能与未来的节点版本X一起工作,(你怎么可能知道!),那么用户收到警告并不是一件坏事-合同上你是在警告他们,它是否能工作还没有证明。谢谢@RobC!那么为什么你认为主要的软件包使用>=?我不知道他们为什么使用=
——仅仅因为他们这样做并不意味着他们是对的。对我来说,这似乎是不合理的,也许他们没有考虑太多(或者我误解了什么)。实际上,在您的场景中,指定^12.18.2
更合适,因为如果node.js符合要求,那么在理论上(希望是在实践中),在=13
之前,任何版本都不会导致不兼容的API更改,从而影响您的包。顺便说一句,npm的节点引擎如=6.2.0 | | | 8 | |>=9.3.0
似乎也错了,为什么不干脆=6.2.0
。你是对的,npm的节点引擎毫无意义-这是一个很酷的验证方法(它们还有另一个令人困惑的例子…)!同意在我的场景中使用^
——很好。