diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
index 267acd2566..1c817ba12f 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
+++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj
@@ -28,10 +28,4 @@
-
-
- C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.SqlXml.dll
-
-
-
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
index dd45adb94b..056f87f897 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
@@ -42,7 +42,6 @@ namespace Volo.Abp.Cli
Logger.LogInformation("ABP CLI (https://abp.io)");
await CheckCliVersionAsync();
- CheckDependencies();
var commandLineArgs = CommandLineArgumentParser.Parse(args);
var commandType = CommandSelector.Select(commandLineArgs);
@@ -66,32 +65,6 @@ namespace Volo.Abp.Cli
}
}
- private void CheckDependencies()
- {
- var installedNpmPackages = CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0");
-
- if (!installedNpmPackages.Contains(" yarn@"))
- {
- InstallYarn();
- }
- if (!installedNpmPackages.Contains(" gulp@"))
- {
- InstallGulp();
- }
- }
-
- private void InstallYarn()
- {
- Logger.LogInformation("Installing yarn...");
- CmdHelper.RunCmd("npm install yarn -g");
- }
-
- private void InstallGulp()
- {
- Logger.LogInformation("Installing gulp...");
- CmdHelper.RunCmd("npm install gulp -g");
- }
-
private async Task CheckCliVersionAsync()
{
var assembly = typeof(CliService).Assembly;
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs
new file mode 100644
index 0000000000..8140b73b64
--- /dev/null
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs
@@ -0,0 +1,49 @@
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+using Volo.Abp.Cli.Utils;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.Cli.ProjectModification
+{
+ public class NpmGlobalPackagesChecker : ITransientDependency
+ {
+ public ILogger Logger { get; set; }
+
+ public NpmGlobalPackagesChecker(PackageJsonFileFinder packageJsonFileFinder)
+ {
+ Logger = NullLogger.Instance;
+ }
+
+ public void Check()
+ {
+ var installedNpmPackages = GetInstalledNpmPackages();
+
+ if (!installedNpmPackages.Contains(" yarn@"))
+ {
+ InstallYarn();
+ }
+ if (!installedNpmPackages.Contains(" gulp@"))
+ {
+ InstallGulp();
+ }
+ }
+
+ protected virtual string GetInstalledNpmPackages()
+ {
+ Logger.LogInformation("Checking installed npm global packages...");
+ return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0");
+ }
+
+ protected virtual void InstallYarn()
+ {
+ Logger.LogInformation("Installing yarn...");
+ CmdHelper.RunCmd("npm install yarn -g");
+ }
+
+ protected virtual void InstallGulp()
+ {
+ Logger.LogInformation("Installing gulp...");
+ CmdHelper.RunCmd("npm install gulp -g");
+ }
+ }
+}
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 4d647d015e..bad90be5c3 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
@@ -18,12 +18,14 @@ namespace Volo.Abp.Cli.ProjectModification
public ILogger Logger { get; set; }
private readonly PackageJsonFileFinder _packageJsonFileFinder;
+ private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker;
private readonly Dictionary _fileVersionStorage = new Dictionary();
- public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder)
+ public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker)
{
_packageJsonFileFinder = packageJsonFileFinder;
+ _npmGlobalPackagesChecker = npmGlobalPackagesChecker;
Logger = NullLogger.Instance;
}
@@ -32,11 +34,16 @@ namespace Volo.Abp.Cli.ProjectModification
{
var fileList = _packageJsonFileFinder.Find(rootDirectory);
- foreach (var file in fileList)
+ if (fileList.Any())
{
- UpdatePackagesInFile(file);
+ _npmGlobalPackagesChecker.Check();
- RunYarnAndGulp(file);
+ foreach (var file in fileList)
+ {
+ UpdatePackagesInFile(file);
+
+ RunYarnAndGulp(file);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
index 840f62741c..4366470cfe 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
@@ -21,8 +21,9 @@ namespace Volo.Abp.Cli.ProjectModification
protected ProjectNugetPackageAdder ProjectNugetPackageAdder { get; }
protected DbContextFileBuilderConfigureAdder DbContextFileBuilderConfigureAdder { get; }
protected EfCoreMigrationAdder EfCoreMigrationAdder { get; }
- protected ProjectNpmPackageAdder ProjectNpmPackageAdder { get; }
protected DerivedClassFinder DerivedClassFinder { get; }
+ protected ProjectNpmPackageAdder ProjectNpmPackageAdder { get; }
+ protected NpmGlobalPackagesChecker NpmGlobalPackagesChecker { get; }
public SolutionModuleAdder(
IJsonSerializer jsonSerializer,
@@ -30,14 +31,16 @@ namespace Volo.Abp.Cli.ProjectModification
DbContextFileBuilderConfigureAdder dbContextFileBuilderConfigureAdder,
EfCoreMigrationAdder efCoreMigrationAdder,
DerivedClassFinder derivedClassFinder,
- ProjectNpmPackageAdder projectNpmPackageAdder)
+ ProjectNpmPackageAdder projectNpmPackageAdder,
+ NpmGlobalPackagesChecker npmGlobalPackagesChecker)
{
- EfCoreMigrationAdder = efCoreMigrationAdder;
- DerivedClassFinder = derivedClassFinder;
JsonSerializer = jsonSerializer;
ProjectNugetPackageAdder = projectNugetPackageAdder;
DbContextFileBuilderConfigureAdder = dbContextFileBuilderConfigureAdder;
+ EfCoreMigrationAdder = efCoreMigrationAdder;
+ DerivedClassFinder = derivedClassFinder;
ProjectNpmPackageAdder = projectNpmPackageAdder;
+ NpmGlobalPackagesChecker = npmGlobalPackagesChecker;
Logger = NullLogger.Instance;
}
@@ -72,6 +75,8 @@ namespace Volo.Abp.Cli.ProjectModification
var targetProjects = ProjectFinder.FindNpmTargetProjectFile(projectFiles);
if (targetProjects.Any())
{
+ NpmGlobalPackagesChecker.Check();
+
foreach (var targetProject in targetProjects)
{
foreach (var npmPackage in module.NpmPackages.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Mvc)))
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
index 2e7a0da442..0c7c9fc6c0 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
@@ -61,7 +61,7 @@ namespace Volo.Abp.Cli.Utils
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- //TODO: Test this. it should work for both operaion systems.
+ //TODO: Test this. it should work for both operation systems.
return "/bin/bash";
}