title: How to avoid npm install/update surprises?
body: <p>How to safely npm install/update when deploying/upgrading ?</p>
  
  <ul>
  <li><p><strong>Problem 1 :</strong> <code>npm install</code> is a statefull operation that depends on the latest versions of dependencies in the time when the command is executed. This causes surprises when deploying since <code>package.json</code> file indicates ranges but not specific versions.</p></li>
  <li><p><strong>Problem 2 :</strong> everytime I make <code>npm update</code> or use <code>ncu</code>, I spend hours/days trying to handle incoherences between modules. Why would this happens in 2018 ?</p></li>
  <li><p><strong>Problem 3 :</strong> How to have <code>package.json</code> file that describes exactly the state of installed packages instead of ranges so that I can deploy without surprises ?</p></li>
  </ul>
  
  <p><strong>NB:</strong> I use Angular</p>