From d0eed87993172abb33bbef2bdc61429508353fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nacho=20Codo=C3=B1er?= Date: Tue, 3 Mar 2026 12:32:08 +0100 Subject: [PATCH] use `meteor npm` and `meteor update --npm` in `create-app` script to manage dependencies --- tools/cli/commands-packages.js | 2 +- tools/modern-tests/scripts/create-app.js | 28 ++++++++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/cli/commands-packages.js b/tools/cli/commands-packages.js index 02f896676f..395c26ba36 100644 --- a/tools/cli/commands-packages.js +++ b/tools/cli/commands-packages.js @@ -1832,7 +1832,7 @@ main.registerCommand({ } // Compile the app to resolve NPM dependencies bump coming from plugins - if (!files.inCheckout() && options["npm"]) { + if (options["npm"]) { await compileMeteorApp(options); return 0; } diff --git a/tools/modern-tests/scripts/create-app.js b/tools/modern-tests/scripts/create-app.js index 3c00d3f6e2..eb3a9abf07 100644 --- a/tools/modern-tests/scripts/create-app.js +++ b/tools/modern-tests/scripts/create-app.js @@ -364,18 +364,23 @@ async function setupFromApp(appName, destDir, { isMonorepo = false, force = fals stdio: 'inherit', }); + log.step('Updating Meteor npm dependencies...'); + await execa(METEOR_EXECUTABLE, ['update', '--npm'], { + cwd: meteorAppDir, + stdio: 'inherit', + }); + if (isMonorepo) { - log.step('Running npm install at root level...'); - await execa.command('npm install', { cwd: destDir, stdio: 'inherit', shell: true }); - log.step('Running npm install at app level...'); - await execa.command('npm install', { + log.step('Running meteor npm install at root level...'); + await execa(METEOR_EXECUTABLE, ['npm', 'install'], { cwd: destDir, stdio: 'inherit' }); + log.step('Running meteor npm install at app level...'); + await execa(METEOR_EXECUTABLE, ['npm', 'install'], { cwd: path.join(destDir, 'app'), stdio: 'inherit', - shell: true, }); } else { - log.step('Running npm install...'); - await execa.command('npm install', { cwd: destDir, stdio: 'inherit', shell: true }); + log.step('Running meteor npm install...'); + await execa(METEOR_EXECUTABLE, ['npm', 'install'], { cwd: destDir, stdio: 'inherit' }); } return { destDir, appPackageJsonPath }; @@ -410,6 +415,15 @@ async function setupFromSkeleton(skeletonName, destDir, { force = false } = {}) stdio: 'inherit', }); + log.step('Updating Meteor npm dependencies...'); + await execa(METEOR_EXECUTABLE, ['update', '--npm'], { + cwd: destDir, + stdio: 'inherit', + }); + + log.step('Running meteor npm install...'); + await execa(METEOR_EXECUTABLE, ['npm', 'install'], { cwd: destDir, stdio: 'inherit' }); + const appPackageJsonPath = path.join(destDir, 'package.json'); const envVars = extractEnvVarsFromTestFile(skeletonName, false);