meteormeteor-packages

How can I tell which package is preventing another package from being updated?


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

How can I tell which package has a dependency that stops foo from being updated?


Solution

  • Nothing a little script couldn't do for us:

    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
    

    This will look up all the packages you use and their version, and then go into the packages storage to check the dependencies. In this form it just lists them sorted by the dependent, so for instance you might see:

    ryw_blog 0.5.7 iron:router 0.9.1
    

    which means that you are using ryw_blog version 0.5.7 which requires iron:router at version 0.9.1.

    If you really just want to check for foo, just add a | grep foo after the sort.

    Of course, this is assuming you aren't on windows. I tested this on osx, but linux should work, too.

    PS: this seemed useful, so I create a gist from it: https://gist.github.com/chfritz/63dbf792d22563e5d0c0