diff --git a/packages/webpack-cli/lib/utils/package-exists.js b/packages/webpack-cli/lib/utils/package-exists.js index 532b619c8b2..5f17b718415 100644 --- a/packages/webpack-cli/lib/utils/package-exists.js +++ b/packages/webpack-cli/lib/utils/package-exists.js @@ -1,9 +1,24 @@ +const fs = require("fs"); +const path = require("path"); + function packageExists(packageName) { - try { - return require.resolve(packageName); - } catch (error) { - return false; + if (process.versions.pnp) { + return true; } + + let dir = __dirname; + + do { + try { + if (fs.statSync(path.join(dir, "node_modules", packageName)).isDirectory()) { + return true; + } + } catch (_error) { + // Nothing + } + } while (dir !== (dir = path.dirname(dir))); + + return false; } module.exports = packageExists; diff --git a/packages/webpack-cli/lib/utils/prompt-installation.js b/packages/webpack-cli/lib/utils/prompt-installation.js index 10794efe224..e870019335a 100644 --- a/packages/webpack-cli/lib/utils/prompt-installation.js +++ b/packages/webpack-cli/lib/utils/prompt-installation.js @@ -51,7 +51,7 @@ async function promptInstallation(packageName, preMessage) { process.exit(2); } - return utils.packageExists(packageName); + return packageName; } process.exit(2);