查看npm包的确切发布日期

yftpprvb  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(130)

使用npm,当我使用npm view [package]命令时,我可以看到相对于今天的发布日期,例如:

$ npm view lodash

lodash@4.17.21 | MIT | deps: none | versions: 114
[...]    
published over a year ago by bnjmnt4n <benjamin@dev.ofcr.se>

如何以YYYY-MM-DD HH:mm:ss等格式获取准确的发布日期-时间?

dgenwo3n

dgenwo3n1#

    • tl; dr**-利用下面 "解决方案" 部分提供的解决方案。

使用npm view可以运行以下命令:

$ npm view express time --json

这会在控制台中记录如下内容:

{
  "modified": "2018-10-31T23:01:06.660Z",
  "created": "2010-12-29T19:38:25.450Z",
  "0.14.0": "2010-12-29T19:38:25.450Z",
  "0.14.1": "2010-12-29T19:38:25.450Z",
  ...
  "4.16.3": "2018-03-12T17:50:14.119Z",
  "4.16.4": "2018-10-11T03:59:14.308Z",
  "5.0.0-alpha.7": "2018-10-27T03:12:11.060Z"
}

如您所见,命令 (上面) 返回一个包含属性的JSON对象; modifiedcreated,并且还具有每个版本的属性(例如,"0.14.0""0.14.1"等…)。每个属性的关联值是日期。

如何获取特定版本的发布日期?

npm-view的文档说明如下:
您可以通过使用句点分隔子字段来查看子字段。
因此,获得值(即,dates)对于modifiedcreated,您可以分别运行以下命令之一:

$ npm view express time.modified

# prints --> `2018-10-31T23:01:06.660Z`

和/或

$ npm view express time.created

# prints --> `2010-12-29T19:38:25.450Z`

但是,当获取特定版本属性/键(如4.16.4)的值/日期时,您需要使用不同的方法,因为以下命令 * 不起作用 *:

# This does not work...
$ npm view express time.4.16.4
# This also does not work...
$ npm view express time.'4.16.4'
# This does not work either...
$ npm view express time["4.16.4"]
    • 解决方案:**

以下命令演示如何成功获取express软件包的4.16.4版本的发布日期:

$ npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['4.16.4'])});"

# prints: --> 2018-10-11T03:59:14.308Z
  • 注意:您需要根据需要将'4.16.4'部件替换为适当的版本 *。

该解决方案:
1.运行npm view express time --json命令并将JSON通过管道传输到nodejs脚本。

  1. nodejs脚本利用内置的process.stdinstdin(fd 0) 读取管道JSON。
    1.然后,我们使用JSON.parse解析JSON字符串,并获得名为4.16.4的属性/键的值
    • 备注**

如果你想要最新版本的发布日期,你可以运行下面两个bash命令:

$ version=$(npm view express version)
$ npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['"$version"'])});"

# prints: --> 2018-10-11T03:59:14.308Z

在这里,我们首先运行npm view express version(以获取最新版本号),并将返回的值赋给名为version的变量(即我们利用Command Substitution)。然后我们在节点脚本中引用version值。
您也可以使用&&运算符将这两个命令链接起来,形成一个单行命令,如下所示:

$ version=$(npm view express version) && npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['"$version"'])});"

# prints: --> 2018-10-11T03:59:14.308Z
p4rjhz4m

p4rjhz4m2#

在npm8+(节点16)上,执行以下操作:

npm view lodash time[4.17.21]

对于最新版本:

npm view lodash time[$(npm view lodash version)]

相关问题