如何判断哪个软件包阻止了另一个软件包的更新?

时间:2015-08-03 20:04:29

标签: meteor meteor-packages

$ meteor list
foo 0.9*
...
$ meteor update foo
Your packages are at their latest compatible versions.

如何判断哪个包具有阻止foo更新的依赖项?

1 个答案:

答案 0 :(得分:5)

没有一个小脚本不能为我们做的事情:

meteor list | grep ^[a-z] | tr -s ' ' | cut -d ' ' -f1,2 | tr -d '\*\+' | tr ':' '_' \
| while read X Y; do \
     cat ~/.meteor/packages/$X/$Y/web.browser.json \
     | xargs -0 node -e "X = JSON.parse(process.argv[1]); \
           X.uses.forEach(function(d) { \
               console.log(\"$X\", \"$Y\", d.package, d.constraint); \
           })"; \
  done | sort

这将查找您使用的所有软件包及其版本,然后进入软件包存储以检查依赖项。在这种形式中,它只列出按依赖项排序的内容,例如,您可能会看到:

ryw_blog 0.5.7 iron:router 0.9.1

这意味着您使用的是ryw_blog版本0.5.7,它需要使用iron:router 0.9.1版本。

如果您真的只想检查foo,只需在排序后添加| grep foo

当然,这是假设你不在Windows上。我在osx上测试了这个,但是linux也应该可以工作。

PS:这似乎很有用,所以我从中创建了一个要点:https://gist.github.com/chfritz/63dbf792d22563e5d0c0