使用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>
Run Code Online (Sandbox Code Playgroud)
如何以YYYY-MM-DD HH:mm:ss这样的格式获取确切的发布日期时间?
tl; dr-使用下面“解决方案”部分提供的解决方案。
使用npm view您可以运行以下命令:
$ npm view express time --json
Run Code Online (Sandbox Code Playgroud)
这会将类似以下内容的内容记录到控制台:
Run Code Online (Sandbox Code Playgroud){ "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`
Run Code Online (Sandbox Code Playgroud)
和
$ npm view express time.created
# prints --> `2010-12-29T19:38:25.450Z`
Run Code Online (Sandbox Code Playgroud)
但是,在获取特定版本属性/键的值/日期(例如)时,4.16.4您将需要使用其他方法,因为以下命令不起作用:
# This does not work...
$ npm view express time.4.16.4
Run Code Online (Sandbox Code Playgroud)
# This also does not work...
$ npm view express time.'4.16.4'
Run Code Online (Sandbox Code Playgroud)
# This does not work either...
$ npm view express time["4.16.4"]
Run Code Online (Sandbox Code Playgroud)
解:
下面的命令演示了如何成功获得公布日期的版本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
Run Code Online (Sandbox Code Playgroud)
注意:您需要根据需要'4.16.4'用适当的版本替换零件。
此解决方案:
npm view express time --json命令并将JSON传递给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
Run Code Online (Sandbox Code Playgroud)
在这里,我们首先运行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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |