用例:
假设有下面的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 )获取此类元信息?
这里有一个最近更新的软件包页面,这正是我所要寻找的,但是在我的package.json依赖项列表的上下文中。
我知道“避免意外”的最佳实践,它建议列出每个依赖项的确切版本号,并谨慎地按需升级包。
发布于 2015-03-18 21:25:28
您可以使用npm命令查询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发布于 2015-02-26 14:24:28
npm中目前不存在此特性。您可以在npm问题跟踪器( https://github.com/npm/npm/issues )上提出特性请求。
一种近似的方法是在每次成功的每日构建之后执行一个npm ls,并将其签入源代码管理中。然后,在失败的日常构建中,您可以报告当前的npm ls和最近为人所知的优秀产品之间的差异。
发布于 2015-03-17 16:09:13
在您的日常更新中运行npm outdated CLI命令优先。这将保存在安装之前什么是过时的记录。

我将输出传输到存储库中的一个文件中,并使用git diff。我提交了前更新文件,并再次将其运行到输出文件。任何好的源代码管理都会以同样的方式工作。
这还有助于跟踪更新后提交的包的版本。
https://stackoverflow.com/questions/28732670
复制相似问题