我希望能够获得与相对语义版本匹配的npm
的最新发布版本。
例如,我想运行以下内容:
npm -v 6.12.x
然后返回与之匹配的确切最新版本:
=> 6.12.1
我已经浏览了一些文档和命令,或者认为使用npm可以实现,但是如果没有安装另一个全局依赖项,我看不到任何有效的方法。
npm没有提供内置功能来完全满足您的要求。
但是,npm确实提供了npm-view命令。它的文档指出以下内容:
如果提供了版本范围,则将为软件包的每个匹配版本打印数据。这将显示每个匹配版本的yui3需要哪个版本的jsdom:
npm view yui3@'>0.5.4' dependencies.jsdom
。
因此,可以通过一些其他Bash实用程序来解析输出来满足您的要求。
考虑运行以下复合命令:
npm view npm@'6.12.x' version | tail -n 1 | cut -d "'" -f2
以下说明上述复合命令中的组成部分:
[npm view npm@'6.12.x' version
此部分利用npm view
命令返回给定范围内的所有版本,即6.12.x
。
独立运行这些部件会将以下内容打印到您的控制台:
[email protected] '6.12.0' [email protected] '6.12.1'
[| tail -n 1
然后使用tail
选项将先前显示的结果通过管道传输到tail
,以便仅打印最后一行。
正在运行:
-n 1
打印:
npm view npm@'6.12.x' version | tail -n 1
[[email protected] '6.12.1'
然后,使用| cut -d "'" -f2
选项并使用单引号作为定界符,将先前显示的结果通过管道传递到cut
。然后,cut
部分选择第二项。
运行完整的复合命令:
-d
打印您想要的结果:
-f2
npm view npm@'6.12.x' version | tail -n 1 | cut -d "'" -f2
)和插入号(6.12.1
)范围。您还可以通过上述复合命令指定波浪线或插入号范围。
示例:
指定波浪线范围:
~
打印:
^
指定插入符范围:
npm view npm@'~4.0.0' version | tail -n 1 | cut -d "'" -f2
^^^^^^
打印:
4.0.5