From 16f4791954ebbb32faa431be4a2808f91fdc0818 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 2 Jan 2025 16:05:26 +0300 Subject: [PATCH] CLI: Use 'npx' for yarn commands --- .../Volo/Abp/Cli/LIbs/InstallLibsService.cs | 20 +++---------------- .../ProjectModification/NpmPackagesUpdater.cs | 2 +- .../ProjectNpmPackageAdder.cs | 6 +++--- .../ProjectModification/ThemePackageAdder.cs | 11 ++-------- .../Volo/Abp/Cli/Utils/NpmHelper.cs | 6 ++++-- 5 files changed, 13 insertions(+), 32 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs index 365ea81431..212e09c631 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs @@ -50,7 +50,7 @@ public class InstallLibsService : IInstallLibsService, ITransientDependency if (!NpmHelper.IsYarnAvailable()) { - Logger.LogWarning("YARN is not installed, which may cause package inconsistency, please use YARN instead of NPM. visit https://classic.yarnpkg.com/lang/en/docs/install/ and install YARN"); + Logger.LogWarning("YARN is not installed, which may cause package inconsistency. ABP uses 'npx yarn ' behind the scenes to prevent possible inconsistencies."); } Logger.LogInformation($"Found {projectPaths.Count} projects."); @@ -66,14 +66,7 @@ public class InstallLibsService : IInstallLibsService, ITransientDependency // angular if (projectPath.EndsWith("angular.json")) { - if (NpmHelper.IsYarnAvailable()) - { - NpmHelper.RunYarn(projectDirectory); - } - else - { - NpmHelper.RunNpmInstall(projectDirectory, "--legacy-peer-deps"); - } + NpmHelper.RunYarn(projectDirectory); } // MVC or BLAZOR SERVER @@ -86,14 +79,7 @@ public class InstallLibsService : IInstallLibsService, ITransientDependency continue; } - if (NpmHelper.IsYarnAvailable()) - { - NpmHelper.RunYarn(projectDirectory); - } - else - { - NpmHelper.RunNpmInstall(projectDirectory, "--no-audit"); - } + NpmHelper.RunYarn(projectDirectory); await CleanAndCopyResources(projectDirectory); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 019feb93d0..2c88f1e8c5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -358,7 +358,7 @@ public class NpmPackagesUpdater : ITransientDependency protected virtual void RunYarn(string fileDirectory) { Logger.LogInformation($"Running Yarn on {fileDirectory}"); - CmdHelper.RunCmd($"yarn", fileDirectory); + CmdHelper.RunCmd($"npx yarn", fileDirectory); } protected virtual void RunNpmInstall(string fileDirectory) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs index c9aade0feb..07705808ae 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs @@ -75,7 +75,7 @@ public class ProjectNpmPackageAdder : ITransientDependency using (DirectoryHelper.ChangeCurrentDirectory(directory)) { Logger.LogInformation("yarn add " + npmPackage.Name + versionPostfix); - CmdHelper.RunCmd("yarn add " + npmPackage.Name + versionPostfix); + CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix); } } else @@ -130,7 +130,7 @@ public class ProjectNpmPackageAdder : ITransientDependency using (DirectoryHelper.ChangeCurrentDirectory(directory)) { Logger.LogInformation("yarn add " + npmPackage.Name + versionPostfix); - CmdHelper.RunCmd("yarn add " + npmPackage.Name + versionPostfix); + CmdHelper.RunCmd("npx yarn add " + npmPackage.Name + versionPostfix); if (skipInstallingLibs) { @@ -158,7 +158,7 @@ public class ProjectNpmPackageAdder : ITransientDependency using (DirectoryHelper.ChangeCurrentDirectory(directory)) { Logger.LogInformation("yarn remove " + npmPackage.Name); - CmdHelper.RunCmd("yarn remove " + npmPackage.Name); + CmdHelper.RunCmd("npx yarn remove " + npmPackage.Name); if (skipInstallingLibs) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ThemePackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ThemePackageAdder.cs index 511943b632..62984ea6af 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ThemePackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ThemePackageAdder.cs @@ -43,18 +43,11 @@ public class ThemePackageAdder : ITransientDependency return; } - var yarnAvailable = NpmHelper.IsYarnAvailable(); foreach (var packageJsonFilePath in packageJsonFilePaths) { var directory = Path.GetDirectoryName(packageJsonFilePath).EnsureEndsWith(Path.DirectorySeparatorChar); - if (yarnAvailable) - { - NpmHelper.YarnAddPackage(package, version, directory); - } - else - { - NpmHelper.NpmInstallPackage(package, version, directory); - } + + NpmHelper.YarnAddPackage(package, version, directory); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs index 7ae76ecf7e..d3dd24c53e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs @@ -49,6 +49,7 @@ public class NpmHelper : ITransientDependency return version > SemanticVersion.Parse("1.20.0"); } + [Obsolete("This method is deprecated. Use 'RunYarn' instead (it uses 'npx', so there is no need for 'yarn' to be globally installed.")] public void RunNpmInstall(string directory, params string[] args) { Logger.LogInformation($"Running npm install on {directory}"); @@ -58,9 +59,10 @@ public class NpmHelper : ITransientDependency public void RunYarn(string directory) { Logger.LogInformation($"Running Yarn on {directory}"); - CmdHelper.RunCmd($"yarn", directory); + CmdHelper.RunCmd($"npx yarn", directory); } + [Obsolete("This method is deprecated. Use 'YarnAddPackage' instead (it uses 'npx', so there is no need for 'yarn' to be globally installed.")] public void NpmInstallPackage(string package, string version, string directory) { var packageVersion = !string.IsNullOrWhiteSpace(version) ? $"@{version}" : string.Empty; @@ -70,7 +72,7 @@ public class NpmHelper : ITransientDependency public void YarnAddPackage(string package, string version, string directory) { var packageVersion = !string.IsNullOrWhiteSpace(version) ? $"@{version}" : string.Empty; - CmdHelper.RunCmd("yarn add " + package + packageVersion, workingDirectory: directory); + CmdHelper.RunCmd("npx yarn add " + package + packageVersion, workingDirectory: directory); } public string GetInstalledNpmPackages()