From d44ffe45fe1ef761242d8deac2d526277a0bf906 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 15:04:07 +0300 Subject: [PATCH] CLI: manually handle to remove cmskit related packages from package.json dependencies resolves https://github.com/volosoft/volo/issues/6247 --- ...emoveDependencyFromPackageJsonFilesStep.cs | 34 ++++++++++++++++ .../Templates/App/AppTemplateBase.cs | 40 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs new file mode 100644 index 0000000000..031c647201 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs @@ -0,0 +1,34 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveDependencyFromPackageJsonFilesStep : ProjectBuildPipelineStep + { + private readonly string _packageJsonFilePath; + private readonly string _packageName; + + public RemoveDependencyFromPackageJsonFilesStep(string packageJsonFilePath, string packageName) + { + _packageJsonFilePath = packageJsonFilePath; + _packageName = packageName; + } + + public override void Execute(ProjectBuildContext context) + { + var packageJsonFile = context.Files.Find(f => f.Name == _packageJsonFilePath); + + if (packageJsonFile == null) + { + return; + } + + var packageJsonObject = JObject.Parse(packageJsonFile.Content); + var dependenciesObject = (JObject) packageJsonObject["dependencies"]; + + dependenciesObject?.Remove(_packageName); + + packageJsonFile.SetContent(packageJsonObject.ToString(Formatting.Indented)); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 286283f22c..ef801a8800 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -173,6 +173,46 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { context.Symbols.Add("CMS-KIT"); } + else + { + RemoveCmsKitDependenciesFromPackageJsonFiles(steps); + } + } + + private static void RemoveCmsKitDependenciesFromPackageJsonFiles(List steps) + { + var adminCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json" + }; + + var publicCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public.Host/package.json", + }; + + var unifiedCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json" + }; + + foreach (var packageJsonFile in adminCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.admin")); + } + + foreach (var packageJsonFile in publicCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.public")); + } + + foreach (var packageJsonFile in unifiedCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro")); + } } private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context)