diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs new file mode 100644 index 0000000000..ab7cff8c56 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs @@ -0,0 +1,35 @@ +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveDependencyFromPackageJsonFileStep : ProjectBuildPipelineStep + { + private readonly string _packageJsonFilePath; + private readonly string _packageName; + + public RemoveDependencyFromPackageJsonFileStep(string packageJsonFilePath, string packageName) + { + _packageJsonFilePath = packageJsonFilePath; + _packageName = packageName; + } + + public override void Execute(ProjectBuildContext context) + { + var packageJsonFile = context.Files.FirstOrDefault(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..52a06f7117 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,37 @@ 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", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/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" + }; + + foreach (var packageJsonFile in adminCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro.admin")); + } + + foreach (var packageJsonFile in publicCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro.public")); + } } private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context)