<p dir="auto">When installing some git dependencies using the Docker image node:10-alpine via <code class="notranslate">npm ci</code>, attempts to <code class="notranslate">npm prune --production</code> result in an error like:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="npm ERR! code 128
npm ERR! Command failed: git clone --mirror -q https://github.com/nodecraft/ampify.git /root/.npm/_cacache/tmp/git-clone-6573274f/.git
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-6573274f/.git'"><pre class="notranslate"><code class="notranslate">npm ERR! code 128
npm ERR! Command failed: git clone --mirror -q https://github.com/nodecraft/ampify.git /root/.npm/_cacache/tmp/git-clone-6573274f/.git
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-6573274f/.git'
</code></pre></div>
<p dir="auto">To help replicate the issue, I have a directory that contains a <code class="notranslate">package.json</code> and <code class="notranslate">package-lock.json</code>. I then have a <code class="notranslate">Dockerfile</code> which when building, illustrates the issue.</p>
<p dir="auto">I've created a repository at <a href="https://github.com/Cherry/npm-prune-ci-bug">https://github.com/Cherry/npm-prune-ci-bug</a> detailing this, including commands to run to replicate the issue.</p>
<p dir="auto">Last known working version: <code class="notranslate">6.10.3</code>. This issue does not occur if I use npm version <code class="notranslate">6.10.3</code> or earlier.<br>
Tested versions that throw the above error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="6.11.0
6.11.1
6.11.2
6.11.3
6.12.1
6.13.1"><pre class="notranslate"><code class="notranslate">6.11.0
6.11.1
6.11.2
6.11.3
6.12.1
6.13.1
</code></pre></div>
<p dir="auto">It appears this regression was introduced in <code class="notranslate">6.11.0</code>, and exists through to the latest version.</p>
<p dir="auto">If I can provide any further information, please let me know.</p>
<h1 dir="auto">What / Why</h1>
<p dir="auto">This bug is related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="521884660" data-permission-text="Title is private" data-url="https://github.com/npm/cli/issues/476" data-hovercard-type="issue" data-hovercard-url="/npm/cli/issues/476/hovercard?comment_id=553917541&amp;comment_type=issue_comment" href="https://github.com/npm/cli/issues/476#issuecomment-553917541">#476 (comment)</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="527439839" data-permission-text="Title is private" data-url="https://github.com/npm/cli/issues/514" data-hovercard-type="issue" data-hovercard-url="/npm/cli/issues/514/hovercard" href="https://github.com/npm/cli/issues/514">#514</a></p>
<h2 dir="auto">When</h2>
<p dir="auto"><code class="notranslate">npm install</code> packages from git in docker</p>
<h2 dir="auto">Where</h2>
<ul dir="auto">
<li>packages from public git repositories</li>
</ul>
<h2 dir="auto">How</h2>
<h3 dir="auto">Current Behavior</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="# npm i
npm ERR! code 128
npm ERR! Command failed: git clone --depth=1 -q -b v2.0.5 git://github.com/boblauer/MockDate.git /root/.npm/_cacache/tmp/git-clone-c9699b7f
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-c9699b7f': Permission denied
npm ERR! 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-12-23T09_49_05_990Z-debug.log"><pre class="notranslate"><code class="notranslate"># npm i
npm ERR! code 128
npm ERR! Command failed: git clone --depth=1 -q -b v2.0.5 git://github.com/boblauer/MockDate.git /root/.npm/_cacache/tmp/git-clone-c9699b7f
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-c9699b7f': Permission denied
npm ERR! 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-12-23T09_49_05_990Z-debug.log
</code></pre></div>
<h3 dir="auto">Steps to Reproduce</h3>
<ul dir="auto">
<li>Create simple package.json with git dependency</li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;name&quot;: &quot;test-npm&quot;,
  &quot;dependencies&quot;: {
    &quot;mockdate&quot;: &quot;git://github.com/boblauer/MockDate.git#v2.0.5&quot;
  }
}"><pre class="notranslate"><code class="notranslate">{
  "name": "test-npm",
  "dependencies": {
    "mockdate": "git://github.com/boblauer/MockDate.git#v2.0.5"
  }
}
</code></pre></div>
<ul dir="auto">
<li>run <code class="notranslate">docker run --network=host -it -v $(pwd):/var/work/test -w /var/work/test node:12.14.0 /bin/bash</code></li>
<li><code class="notranslate">ls -l</code> shows that files are owned by unknown user and unknown group (this is typical behaviour on build agents like teamcity, teamcity clones git repo and mounts it inside docker container)</li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="# ls -l
-rw-r--r-- 1 20857 115755  114 Dec 23 09:46 package.json"><pre class="notranslate"><code class="notranslate"># ls -l
-rw-r--r-- 1 20857 115755  114 Dec 23 09:46 package.json
</code></pre></div>
<ul dir="auto">
<li>run <code class="notranslate">npm install</code></li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="# Depends on environment you can get

npm ERR! code 128
npm ERR! Command failed: git clone --depth=1 -q -b v2.0.5 git://github.com/boblauer/MockDate.git /root/.npm/_cacache/tmp/git-clone-c9699b7f
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-c9699b7f': Permission denied
npm ERR! 

# or

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@&lt;private server&gt;/admin-template.git
npm ERR! 
npm ERR! No user exists for uid 1000
npm ERR! fatal: Could not read from remote repository."><pre class="notranslate"><code class="notranslate"># Depends on environment you can get

npm ERR! code 128
npm ERR! Command failed: git clone --depth=1 -q -b v2.0.5 git://github.com/boblauer/MockDate.git /root/.npm/_cacache/tmp/git-clone-c9699b7f
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-c9699b7f': Permission denied
npm ERR! 

# or

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@&lt;private server&gt;/admin-template.git
npm ERR! 
npm ERR! No user exists for uid 1000
npm ERR! fatal: Could not read from remote repository.
</code></pre></div>
<ul dir="auto">
<li>run <code class="notranslate">npm i -g npm@6.10</code> (downgrade to npm 6.10.X)</li>
<li>run <code class="notranslate">npm install</code></li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="# all works well!

updated 1 package and audited 1 package in 1.355s
found 0 vulnerabilities"><pre class="notranslate"><code class="notranslate"># all works well!

updated 1 package and audited 1 package in 1.355s
found 0 vulnerabilities
</code></pre></div>
<h3 dir="auto">Expected Behavior</h3>
<ul dir="auto">
<li><code class="notranslate">npm install</code> / <code class="notranslate">npm ci</code> works well like npm@6.10</li>
</ul>