From 271c93d8571d0ec39090c3f51f94f9dff5e260d0 Mon Sep 17 00:00:00 2001 From: Benjamin Pierce Date: Fri, 14 Nov 2025 22:56:54 -0800 Subject: [PATCH] Add npm 10.5.0 minimum to preinstall --- build/npm/preinstall.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/build/npm/preinstall.js b/build/npm/preinstall.js index 79ce65dfd9acf..47a07ba07cc75 100644 --- a/build/npm/preinstall.js +++ b/build/npm/preinstall.js @@ -5,6 +5,7 @@ // @ts-check const path = require('path'); const fs = require('fs'); +const semver = require('semver'); if (!process.env['VSCODE_SKIP_NODE_VERSION_CHECK']) { // Get the running Node.js version @@ -35,6 +36,17 @@ if (!process.env['VSCODE_SKIP_NODE_VERSION_CHECK']) { } } +const requiredNpmVersion = '10.5.0'; +const npmUserAgent = process.env['npm_config_user_agent']; +const npmVersionMatch = npmUserAgent?.match(/npm\/(\d+\.\d+\.\d+)/); +const npmVersion = npmVersionMatch?.[1]; +const currentNpmVersion = npmVersion ? semver.coerce(npmVersion) : undefined; + +if (currentNpmVersion && semver.lt(currentNpmVersion, requiredNpmVersion)) { + console.error(`\x1b[1;31m*** Please use npm v${requiredNpmVersion} or later. Currently using v${npmVersion}. ***\x1b[0;0m`); + process.exit(1); +} + if (process.env.npm_execpath?.includes('yarn')) { console.error('\x1b[1;31m*** Seems like you are using `yarn` which is not supported in this repo any more, please use `npm i` instead. ***\x1b[0;0m'); throw new Error();