Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我是否应该使用“&燃气轮机=&引用;(大于或等于)用于节点包的package.json引擎字段中的节点或npm版本?_Node.js_Npm_Package.json_Semantic Versioning - Fatal编程技术网

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的节点引擎毫无意义-这是一个很酷的验证方法(它们还有另一个令人困惑的例子…)!同意在我的场景中使用
^
——很好。