diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md
index c3b826517edba8..ce9cc11dc2bb03 100644
--- a/deps/npm/CHANGELOG.md
+++ b/deps/npm/CHANGELOG.md
@@ -1,3 +1,23 @@
+## v7.5.2 (2021-02-02
+
+### BUG FIXES
+
+* [`37613e4e6`](https://github.com/npm/cli/commit/37613e4e686e4891210acaabc9c23f41456eda3f)
+[#2395](https://github.com/npm/cli/issues/2395)
+[#2329](https://github.com/npm/cli/issues/2329)
+fix(exec): use latest version when possible
+([@wraithgar](https://github.com/wraithgar))
+* [`567c9bd03`](https://github.com/npm/cli/commit/567c9bd03a7669111fbba6eb6d1f12ed7cad5a1b)
+fix(lib/npm): do not clobber config.execPath
+([@wraithgar](https://github.com/wraithgar))
+
+### DEPENDENCIES
+
+* [`643709706`](https://github.com/npm/cli/commit/64370970653af5c8d7a2be2c2144e355aa6431b0)
+`@npmcli/config@1.2.9` ([@isaacs](https://github.com/isaacs))
+  * [`4c6be4a`](https://github.com/npm/config/commit/4c6be4a66a3e89ae607e08172b8543b588a95fb5) Restore npm v6 behavior with `INIT_CWD`
+  * [`bbebc66`](https://github.com/npm/config/commit/bbebc668888f71dba57959682364b6ff26ff4fac) Do not set the `PREFIX` environment variable
+
 ## v7.5.1 (2021-02-01
 
 ### BUG FIXES
diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html
index ba62a72741de83..1af771cfd748f9 100644
--- a/deps/npm/docs/output/commands/npm-ls.html
+++ b/deps/npm/docs/output/commands/npm-ls.html
@@ -159,7 +159,7 @@ <h3 id="description">Description</h3>
 the results to only the paths to the packages named.  Note that nested
 packages will <em>also</em> show the paths to the specified packages.  For
 example, running <code>npm ls promzard</code> in npm’s source tree will show:</p>
-<pre lang="bash"><code>npm@7.5.1 /path/to/npm
+<pre lang="bash"><code>npm@7.5.2 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 </code></pre>
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html
index 727120c1b747aa..fe014b1c34719f 100644
--- a/deps/npm/docs/output/commands/npm.html
+++ b/deps/npm/docs/output/commands/npm.html
@@ -148,7 +148,7 @@ <h2 id="table-of-contents">Table of contents</h2>
 <pre lang="bash"><code>npm &lt;command&gt; [args]
 </code></pre>
 <h3 id="version">Version</h3>
-<p>7.5.1</p>
+<p>7.5.2</p>
 <h3 id="description">Description</h3>
 <p>npm is the package manager for the Node JavaScript platform.  It puts
 modules in place so that node can find them, and manages dependency
diff --git a/deps/npm/lib/exec.js b/deps/npm/lib/exec.js
index d36dd87cfb9712..e90ec0866e4dd7 100644
--- a/deps/npm/lib/exec.js
+++ b/deps/npm/lib/exec.js
@@ -169,8 +169,12 @@ const exec = async args => {
         return await readPackageJson(pj)
       } catch (er) {}
     }
+    // Force preferOnline to true so we are making sure to pull in the latest
+    // This is especially useful if the user didn't give us a version, and
+    // they expect to be running @latest
     return await pacote.manifest(p, {
       ...npm.flatOptions,
+      preferOnline: true,
     })
   }))
 
@@ -193,9 +197,13 @@ const exec = async args => {
     const arb = new Arborist({ ...npm.flatOptions, path: installDir })
     const tree = await arb.loadActual()
 
-    // any that don't match the manifest we have, install them
-    // add installDir/node_modules/.bin to pathArr
-    const add = manis.filter(mani => manifestMissing(tree, mani))
+    // at this point, we have to ensure that we get the exact same
+    // version, because it's something that has only ever been installed
+    // by npm exec in the cache install directory
+    const add = manis.filter(mani => manifestMissing(tree, {
+      ...mani,
+      _from: `${mani.name}@${mani.version}`,
+    }))
       .map(mani => mani._from)
       .sort((a, b) => a.localeCompare(b))
 
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index 7a15a29b2fed99..40aa9bbd9b5061 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -173,8 +173,8 @@ const npm = module.exports = new class extends EventEmitter {
     if (node && node.toUpperCase() !== process.execPath.toUpperCase()) {
       log.verbose('node symlink', node)
       process.execPath = node
+      this.config.execPath = node
     }
-    this.config.execPath = node
 
     await this.config.load()
     this.argv = this.config.parsedArgv.remain
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 450f21d7b757a1..8c7dc2732360e6 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -26,7 +26,7 @@ example, running \fBnpm ls promzard\fP in npm's source tree will show:
 .P
 .RS 2
 .nf
-npm@7\.5\.1 /path/to/npm
+npm@7\.5\.2 /path/to/npm
 └─┬ init\-package\-json@0\.0\.4
   └── promzard@0\.1\.5
 .fi
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index fc76aef29eb231..206cc3124f7981 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -10,7 +10,7 @@ npm <command> [args]
 .RE
 .SS Version
 .P
-7\.5\.1
+7\.5\.2
 .SS Description
 .P
 npm is the package manager for the Node JavaScript platform\.  It puts
diff --git a/deps/npm/node_modules/@npmcli/config/lib/set-envs.js b/deps/npm/node_modules/@npmcli/config/lib/set-envs.js
index 089333796163ed..36d37145466e0d 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/set-envs.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/set-envs.js
@@ -53,13 +53,7 @@ const setEnvs = (config) => {
     list: [cliConf, envConf],
   } = config
 
-  const { DESTDIR } = env
-  if (platform !== 'win32' && DESTDIR && globalPrefix.indexOf(DESTDIR) === 0)
-    env.PREFIX = globalPrefix.substr(DESTDIR.length)
-  else
-    env.PREFIX = globalPrefix
-
-  env.INIT_CWD = env.INIT_CWD || process.cwd()
+  env.INIT_CWD = process.cwd()
 
   // if the key is the default value,
   //   if the environ is NOT the default value,
diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json
index a7050c73a03ef4..644544a49d8698 100644
--- a/deps/npm/node_modules/@npmcli/config/package.json
+++ b/deps/npm/node_modules/@npmcli/config/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@npmcli/config",
-  "version": "1.2.8",
+  "version": "1.2.9",
   "files": [
     "lib"
   ],
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 57b7f48964b816..2eecfdbfc04569 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
 {
-  "version": "7.5.1",
+  "version": "7.5.2",
   "name": "npm",
   "description": "a package manager for JavaScript",
   "keywords": [
@@ -44,7 +44,7 @@
   "dependencies": {
     "@npmcli/arborist": "^2.1.1",
     "@npmcli/ci-detect": "^1.2.0",
-    "@npmcli/config": "^1.2.8",
+    "@npmcli/config": "^1.2.9",
     "@npmcli/run-script": "^1.8.1",
     "abbrev": "~1.1.1",
     "ansicolors": "~0.3.2",