javascript - 获取最近更新的软件包

标签 javascript node.js npm package

用例:

假设有以下package.json:

{
  "version": "0.0.1",
  "private": true,
  "name": "my-app",
  "devDependencies": {
    "connect-modrewrite": "*",
    "csslint": "~0.10.0",
    "eslint": "*",
    ...
}

并且 eslint 维护者发布了一个新的软件包更新,我的日常构建任务已通过 npm install 以及其他软件包安装了该更新。突然构建任务失败了。

现在,在研究构建失败的原因时,我想知道是否存在依赖包更新可能是每日构建失败的罪魁祸首。

期望的结果/输出:

eslint             0.15.0 02/15/2015
connect-modrewrite 0.2.0  01/15/2015
...

基本上,我需要一个带有版本日期的项目依赖项列表。是否可以使用 npm 或像 npm-check 这样的第三方工具获取这种元信息?


有一个Recently updated packages页面正是我正在寻找的内容,但在我的 package.json 依赖项列表的上下文中。


我知道“避免意外”最佳实践,建议为每个依赖项列出确切的版本号,并谨慎地按需升级包。

最佳答案

您可以使用 view npm command 查询 npm 注册表以获取有关软件包的信息。 。您甚至可以传入您感兴趣的 json 字段(看起来 time.modified 对您的情况会有帮助)。

将其与一些 shell 管道和实用程序结合起来,例如 jq你会得到你所需要的。

$ npm view --json eslint | jq ".name, .version, .time.modified" | paste -s
"eslint"    "0.17.1"    "2015-03-18T00:31:26.357Z"

这样的东西会给你每个依赖项的结果(你可能猜到我不太擅长 bash):

#!/bin/bash

function trimQuotes {
  echo $@ | cut -c 2- | rev | cut -c 2- | rev
}

function deps {
  trimQuotes `cat package.json | jq '.dependencies | keys | join(" ")'`
}

function info {
  npm view --json $1 | jq '.name, .version, .time.modified' | paste -s
}

function printInfo {
  for word in $@; do
    echo -en "$(trimQuotes $word)\t"
  done;

  echo
}

function main {
  for pkg in $(deps); do
    echo "$(info $pkg)" | while read line; do
      printInfo $line
    done;
  done;
}

main

关于javascript - 获取最近更新的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732670/

相关文章:

javascript - 如何忽略空数组元素进行长度计算

javascript - .modal() 函数在 Angular 8 中不起作用

javascript - 如何删除/停止在 jquery 中执行的脚本

javascript - 如何在node.js上引用 Handlebars 中带有空格的元素?

deployment - 如何使用 npm 在当前目录中安装 package.json 依赖项

javascript - 单击时如何格式化 div 中的一行文本?

javascript - 当值已经为空时如何通过分配默认值来解构对象

javascript - nodejs mysql 无法执行查询

node.js - 使用 docker 时如何加快 CI 构建时间?

npm - 如何从 Artifactory 中删除 npm 包的版本?