only npm install if necessary