fix #12261
Merge pull request #12315 from twbs/use-shrinkwrap

Do npm caching based on npm-shrinkwrap.canonical.json