npm - 查看 npm 包的确切发布日期
问题描述
使用 npm 6.x,当我使用npm view [package]
命令时,我可以看到相对于今天的发布日期,例如:
$ npm view express
express@4.16.4 | MIT | deps: 30 | versions: 261
[... other info about express package ]
published 3 weeks ago by dougwilson <doug@somethingdoug.com>
如何以 YYYY-MM-DD HH:mm:ss 等格式获取准确的发布日期时间?
解决方案
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 对象;modified
, created
, 并且还具有每个版本的属性(例如"0.14.0"
, "0.14.1"
, 等...)。每个属性的关联值是一个日期。
如何获取特定版本的发布日期?
npm-view
用于说明以下内容的文档;
您可以通过用句点分隔子字段来查看子字段。
因此,获取 和 的值(即日期)modified
,created
您可以分别运行以下任一命令:
$ 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"]
解决方案:
以下命令演示了如何成功获取包版本的发布4.16.4
日期express
:
$ 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'
部件更换为适当的版本。
这个解决方案:
- 运行
npm view express time --json
命令并将 JSON 传送到 nodejs 脚本。 - nodejs 脚本利用内置函数
process.stdin
从stdin
(fd 0)读取管道 JSON 。 - 然后我们利用
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
推荐阅读
- excel - 有条件地粘贴值,利用相邻单元格
- php - 这个登录系统有多安全?(在 PHP 中使用 Cookie)
- javascript - 打字稿:'any []'类型的参数不可分配给'[]'类型的参数.ts(2345)
- c# - how to check whether items present in list box & how to check list box has duplicates? in csharp
- c - 省略类型定义结构的显式转换
- ios - Xcode not giving debug information on crash
- javascript - 如何重置 JQueryUI Resizable 元素?
- angular - 未在订阅方法之外设置在订阅方法中为变量赋值
- python - 当我使用 predict_generator 时,keras.utils.Sequence 无法正常工作
- jmeter - 为什么 jmeter 不在 Duraion 时间停止线程