public void Update(string rootDirectory) { var fileList = _packageJsonFileFinder.Find(rootDirectory); if (!fileList.Any()) { return; } _npmGlobalPackagesChecker.Check(); foreach (var file in fileList) { UpdatePackagesInFile(file, out var packagesUpdated); if (packagesUpdated) { var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar); RunYarn(fileDirectory); if (IsAngularProject(fileDirectory) == false) { Thread.Sleep(500); RunGulp(fileDirectory); } } } }
public virtual async Task AddAsync( [NotNull] string solutionFile, [NotNull] string moduleName, string startupProject, bool skipDbMigrations = false) { Check.NotNull(solutionFile, nameof(solutionFile)); Check.NotNull(moduleName, nameof(moduleName)); var module = await FindModuleInfoAsync(moduleName); Logger.LogInformation($"Installing module '{module.Name}' to the solution '{Path.GetFileNameWithoutExtension(solutionFile)}'"); var projectFiles = ProjectFinder.GetProjectFiles(solutionFile); foreach (var nugetPackage in module.NugetPackages) { var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetPackage.Target); if (targetProjectFile == null) { Logger.LogDebug($"Target project is not available for NuGet package '{nugetPackage.Name}'"); continue; } await ProjectNugetPackageAdder.AddAsync(targetProjectFile, nugetPackage); } if (!module.NpmPackages.IsNullOrEmpty()) { 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))) { await ProjectNpmPackageAdder.AddAsync(Path.GetDirectoryName(targetProject), npmPackage); } } } else { Logger.LogDebug("Target project is not available for NPM packages."); } } ModifyDbContext(projectFiles, module, startupProject, skipDbMigrations); }