用例:
假设有以下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/