Browse Source

Cli add-module: Detect package version when adding Npm packages for MVC applications

resolves https://github.com/abpframework/abp/issues/8572
pull/8596/head
Yunus Emre Kalkan 6 years ago
parent
commit
e1fc8bd25e
  1. 31
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs

31
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using System.Xml; using System.Xml;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using Newtonsoft.Json.Linq;
using Volo.Abp.Cli.Args; using Volo.Abp.Cli.Args;
using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Commands;
using Volo.Abp.Cli.Commands.Services; using Volo.Abp.Cli.Commands.Services;
@ -113,6 +114,12 @@ namespace Volo.Abp.Cli.ProjectModification
Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'..."); Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'...");
if (version == null)
{
TryDetectAbpVersion(Path.Combine(directory, "package.json"), ref version);
}
Console.WriteLine(version);
var versionPostfix = version != null ? $"@{version}" : string.Empty; var versionPostfix = version != null ? $"@{version}" : string.Empty;
using (DirectoryHelper.ChangeCurrentDirectory(directory)) using (DirectoryHelper.ChangeCurrentDirectory(directory))
@ -132,6 +139,30 @@ namespace Volo.Abp.Cli.ProjectModification
return Task.CompletedTask; return Task.CompletedTask;
} }
private void TryDetectAbpVersion(string packageJsonFile, ref string version)
{
var packageJsonFileContent = File.ReadAllText(packageJsonFile);
var packageJsonObject = JObject.Parse(packageJsonFileContent);
var dependenciesObject = (JObject) packageJsonObject["dependencies"];
if (dependenciesObject == null)
{
return;
}
var packages = dependenciesObject.Children<JProperty>();
foreach (var package in packages)
{
if (package.Name.StartsWith("@abp/") || package.Name.StartsWith("@volo/"))
{
version = package.Value.ToString();
return;
}
}
}
private async Task<NpmPackageInfo> FindNpmPackageInfoAsync(string packageName) private async Task<NpmPackageInfo> FindNpmPackageInfoAsync(string packageName)
{ {

Loading…
Cancel
Save