Node.js bower(和npm)版本语法是什么?
Bower使我能够使用以下语法指定包的版本要求:Node.js bower(和npm)版本语法是什么?,node.js,bower,semantic-versioning,Node.js,Bower,Semantic Versioning,Bower使我能够使用以下语法指定包的版本要求: "dependencies": { "<name>": "<version>", }, “依赖项”:{ "": "", }, 但是我还没有找到的语法。我知道我可以指定以下版本: 大于具有>1.0.0“ 大于或等于一个版本:“>=1.0.0” 或者在某些范围内:“1.0.0-2.0.0” 我还知道,有一个常见的版本语法包含tilde:“~1.0.0”。但我不确定它的含义,以及它是否与“=1.0.0”相同 我还想知
"dependencies": {
"<name>": "<version>",
},
“依赖项”:{
"": "",
},
但是我还没有找到
的语法。我知道我可以指定以下版本:
- 大于具有
>1.0.0“
- 大于或等于一个版本:
“>=1.0.0”
- 或者在某些范围内:
李>“1.0.0-2.0.0”
“~1.0.0”
。但我不确定它的含义,以及它是否与“=1.0.0”
相同
我还想知道我是否能够指定多个非连续的版本,例如确切的
1.0.3
加上大于1.5.0
的版本等等。简而言之,Bower版本号(和NPM)的语法称为SemVer,是“语义版本控制”的缩写。您可以在的API上找到有关Bower和NPM中使用的SemVer的详细语法的文档。您可以在上了解有关底层规范(未提及~
或其他语法详细信息)的更多信息
有一个你可以玩的,使所有这些更容易摸索和测试
SemVer不仅仅是一种语法!关于发布API的正确方法,有一些非常有趣的事情要说,这将有助于理解语法的含义。关键是:
一旦您确定了您的公共API,您就可以通过特定的版本号增量来传达对它的更改考虑X.Y.Z(Major.Minor.Patch)的版本格式。不影响API增量(补丁版本)、向后兼容的API添加/更改增量(次要版本)和向后不兼容的API更改增量(主要版本)的错误修复
因此,您关于~
的特定问题与Major.Minor.Patch模式有关。(与相关插入符号操作符一样,^
)您可以使用~
将您愿意接受的版本范围缩小为:
- 后续的补丁级别更改为相同的次要版本(“不影响API的错误修复”),或:
- 后续次要级别对同一主要版本的更改(“向后兼容的API添加/更改”)
"angular": "~1.2"
or:
"angular": "~1.2.0"
这还可以获得与使用.x
语法相同的结果:
"angular": "1.2.x"
但是,您可以使用tilde/~
语法,使其更加具体:如果您只愿意接受从1.2.4开始但仍低于1.3.0的补丁级别更改,则可以使用:
"angular": "~1.2.4"
向左移动,朝向主版本,如果您使用
"angular": "~1"
。。。这和
"angular": "1.x"
or:
"angular": "^1.0.0"
…并匹配高于1.0.0但低于2.0的任何次要或修补程序级别更改:
注意上面的最后一个变化:它被称为“插入符号范围”。插入符号看起来非常像
,因此您可以原谅认为它的意思是“任何大于1.0.0的版本”。(我确实滑倒了。)不
插入符号范围基本上是用来表示您只关心最左边的有效数字-通常是主要版本-并且允许任何不影响最左边数字的次要或补丁级别更改。但是,与指定主版本的波浪线范围不同,插入符号范围允许您指定精确的次/面片起点。因此,虽然^1.0.0===~1
,但Bower使用的插入符号范围(如^1.2.3
)可以表示您将进行任何更改=1.2.3&&&),但这里有几个快速示例:
您可以安装特定版本:
$ bower install jquery#1.11.1
您可以使用~指定“以此开头的任何版本”:
$ bower install jquery#~1.11
您可以同时指定多个版本要求:
$ bower install "jquery#<2.0 >1.10"
$bower安装“jquery#1.10”
基于,您可以使用
- 连字符范围X.Y.Z-A.B.C
1.2.3-2.3.4
表示>=1.2.3=1.2.0=0.0.0=0.0.0您还可以使用最新
关键字安装可用的最新版本:
"dependencies": {
"fontawesome": "latest"
}
如果没有修补程序编号,~
相当于将.x
附加到非平铺版本。如果有修补程序编号,~
允许所有修补程序编号>=指定的修补程序编号
~1 := 1.x
~1.2 := 1.2.x
~1.2.3 := (>=1.2.3 <1.3.0)
~1:=1.x
~1.2:=1.2.x
~1.2.3:=(>=1.2.3这可能是So~
的重复,特别是指修补程序(第三个)编号可能大于指定的编号,例如~1.2.3
相当于=1.2.3也可用于次要(第二个)有趣的是,SemVer文档似乎也允许使用x符号(这对人类来说更加直观).x-notation一开始读起来很直观,但灵活性要小得多。例如,'1.1.x'==='>=1.1.0'==='~1.1.0'
。1.1.0的大小写很简单。但是x-notation不能是细粒度的,就像'>=1.1.4'
或'1.1.4'
一样。因此,您最终会在依赖项列表中的一个地方找到'1.1.x'
,然后是'2.3'代码>在另一个地方。这很好,而且很有效,但是开发人员需要解析多个语法来读取单个列表。而且,如果您编写程序包以编程方式设置版本,您需要一个语法。而且,大多数人希望防止破坏更改。因此,所有问题都可以通过~
解决。哈。我认为“grok”与书呆子式的文化(可能与年龄有关)相比,它的地理位置要小得多,@Clonkex。对于未来的读者来说:这是指海因莱因在一个陌生的地方的陌生人……感谢你给出了一个毫无意义、易读的答案。我不必追溯或做任何事情,只是,砰,答案就在这里。干得好;)我对这个的实际用途很好奇。轮盘赌安装?查看
~1 := 1.x
~1.2 := 1.2.x
~1.2.3 := (>=1.2.3 <1.3.0)