title: How do I Properly run NPM Install in Visual Studio Team Services Build Agent
body: <p>I'm having trouble setting up an NPM task for an automated build in Visual Studio Team Services (previously Visual Studio Online).  There are two problems:</p>
  
  <ol>
  <li>Cache locking errors (shown below). </li>
  <li>It is painfully slow -- 45+ minutes for a dozen or so packages.</li>
  </ol>
  
  <p>I added the --cache argument but that did not seem to help.  </p>
  
  <pre><code>npm install --dev --cache $(Agent.BuildDirectory)\b
  </code></pre>
  
  <p>The binaries folder seems like the right spot for the cache, but honestly, I'm not sure.  Some documentation here:</p>
  
  <p><a href="https://msdn.microsoft.com/Library/vs/alm/Build/scripts/variables#AgentVariables" rel="noreferrer">https://msdn.microsoft.com/Library/vs/alm/Build/scripts/variables#AgentVariables</a></p>
  
  <p>I appreciate any advice...</p>
  
  <p><strong>Current Config:</strong></p>
  
  <p><a href="https://i.stack.imgur.com/rozzq.png" rel="noreferrer"><img src="https://i.stack.imgur.com/rozzq.png" alt="enter image description here"></a></p>
  
  <p><strong>Build console output:</strong></p>
  
  <pre><code>Set workingFolder to default: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.97.1\tasks\Npm\0.2.7
  ##[debug]check path : C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.97.1\tasks\Npm\0.2.7\task.json
  ##[debug]set resource file to: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.97.1\tasks\Npm\0.2.7\task.json
  ##[debug]system.culture=en-US
  ##[debug]check path : C:\Program Files\nodejs\npm.cmd
  ##[debug]npm=C:\Program Files\nodejs\npm.cmd
  ##[debug]cwd=C:\a\1\s\com.example.web
  ##[debug]path exists: C:\a\1\s\com.example.web
  ##[debug]command=install
  ##[debug]C:\Program Files\nodejs\npm.cmd arg: install
  ##[debug]arguments=--dev --cache C:\a\1\b
  ##[debug]C:\Program Files\nodejs\npm.cmd arg: --dev --cache C:\a\1\b
  ##[debug]exec tool: C:\Program Files\nodejs\npm.cmd
  ##[debug]Arguments:
  ##[debug]   install
  ##[debug]   --dev
  ##[debug]   --cache
  ##[debug]   C:\a\1\b
  [command]C:\Program Files\nodejs\npm.cmd install --dev --cache C:\a\1\b
  npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
  npm WARN deprecated sf-lint@1.0.2: Use eslint-config-simplifield instead.
  npm WARN deprecated lodash@2.4.1: lodash@&lt;3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
  npm WARN deprecated lodash@0.9.2: Grunt needs your help! See https://github.com/gruntjs/grunt/issues/1403.
  npm ERR! addLocal Could not install C:\a\1\s\com.example.web\@shinnn\eslint-config@&gt;=0.0.5 &lt;0.0.6\fixtures
  npm WARN deprecated phantomjs@2.1.3: Package renamed to phantomjs-prebuilt. Please update 'phantomjs' package references to 'phantomjs-prebuilt'
  npm WARN peerDependencies The peer dependency qunitjs@^1.14.0 included from karma-qunit will no
  npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
  npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
  npm WARN package.json Dependency 'mocha' exists in both dependencies and devDependencies, using 'mocha@*' from dependencies
  npm WARN package.json Dependency 'mocha' exists in both dependencies and devDependencies, using 'mocha@*' from dependencies
  npm ERR! addLocal Could not install C:\a\1\s\com.example.web\@shinnn\eslint-config@&gt;=0.0.4 &lt;0.0.5\fixtures
  &gt; cson@1.6.2 preinstall C:\a\1\s\com.example.web\node_modules\gulp-uglify\node_modules\uglify-save-license\node_modules\grunt-replace\node_modules\applause\node_modules\cson
  &gt; node ./cyclic.js
  npm WARN locking Error: EMFILE, open 'C:\a\1\b\_locks\strip-ansi-0bb45da2369f5768.lock.STALE.STALE.STALE'
  npm WARN locking     at Error (native)
  npm WARN locking  C:\a\1\b\_locks\strip-ansi-0bb45da2369f5768.lock failed { [Error: EMFILE, open 'C:\a\1\b\_locks\strip-ansi-0bb45da2369f5768.lock.STALE.STALE.STALE']
  npm WARN locking   errno: -4066,
  npm WARN locking   code: 'EMFILE',
  npm WARN locking   path: 'C:\\a\\1\\b\\_locks\\strip-ansi-0bb45da2369f5768.lock.STALE.STALE.STALE' }
  npm ERR! Windows_NT 6.3.9600
  npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "--dev" "--cache" "C:\\a\\1\\b"
  npm ERR! node v0.12.7
  npm ERR! npm  v2.11.3
  2016-03-30T14:15:17.4509244Z npm ERR! Attempt to unlock C:\a\1\s\com.example.web\node_modules\gulp-imagemin\node_modules\imagemin-pngquant\node_modules\pngquant-bin\node_modules\compare-size\node_modules\ava\node_modules\chalk\node_modules\strip-ansi, which hasn't been locked
  npm ERR! 
  npm ERR! If you need help, you may report this error at:
  npm ERR!     &lt;https://github.com/npm/npm/issues&gt;
  npm WARN locking Error: EMFILE, open 'C:\a\1\b\_locks\ansi-styles-cedcc1e1e4774cd0.lock.STALE.STALE.STALE'
  npm WARN locking     at Error (native)
  npm WARN locking  C:\a\1\b\_locks\ansi-styles-cedcc1e1e4774cd0.lock failed { [Error: EMFILE, open 'C:\a\1\b\_locks\ansi-styles-cedcc1e1e4774cd0.lock.STALE.STALE.STALE']
  npm WARN locking   errno: -4066,
  npm WARN locking   code: 'EMFILE',
  npm WARN locking   path: 'C:\\a\\1\\b\\_locks\\ansi-styles-cedcc1e1e4774cd0.lock.STALE.STALE.STALE' }
  npm ERR! Windows_NT 6.3.9600
  npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "--dev" "--cache" "C:\\a\\1\\b"
  npm ERR! node v0.12.7
  npm ERR! npm  v2.11.3
  npm ERR! Attempt to unlock C:\a\1\s\com.example.web\node_modules\gulp-imagemin\node_modules\imagemin-pngquant\node_modules\pngquant-bin\node_modules\compare-size\node_modules\ava\node_modules\chalk\node_modules\ansi-styles, which hasn't been locked
  npm ERR! 
  npm ERR! If you need help, you may report this error at:
  npm ERR!     &lt;https://github.com/npm/npm/issues&gt;
  npm WARN locking Error: EMFILE, open 'C:\a\1\b\_locks\has-ansi-819c7cca16ab7ac8.lock.STALE.STALE.STALE'
  npm WARN locking     at Error (native)
  2016-03-30T14:15:17.5709240Z npm WARN locking  C:\a\1\b\_locks\has-ansi-819c7cca16ab7ac8.lock failed { [Error: EMFILE, open 'C:\a\1\b\_locks\has-ansi-819c7cca16ab7ac8.lock.STALE.STALE.STALE']
  </code></pre>