UNPKG

@ts-dev-tools/core

Version:
59 lines (58 loc) 3.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DuplicateDependenciesService = void 0; var PackageJson_1 = require("./PackageJson"); var PluginService_1 = require("./PluginService"); var DuplicateDependenciesService = /** @class */ (function () { function DuplicateDependenciesService() { } DuplicateDependenciesService.executeDeduplication = function (absoluteProjectDir) { console.info("Checking for duplicate dev dependencies..."); var duplicateDependencies = new Map(); DuplicateDependenciesService.getProjectDuplicateDependencies(absoluteProjectDir, duplicateDependencies); DuplicateDependenciesService.printDuplicatedDependencies(duplicateDependencies); console.info("Check for duplicate dev dependencies done!"); }; DuplicateDependenciesService.getProjectDuplicateDependencies = function (absoluteProjectDir, duplicateDependencies) { var installedPlugins = PluginService_1.PluginService.getInstalledPlugins(absoluteProjectDir); var projectPackageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir); var projectDevDependencies = projectPackageJson.getDevDependenciesPackageNames(); for (var _i = 0, installedPlugins_1 = installedPlugins; _i < installedPlugins_1.length; _i++) { var plugin = installedPlugins_1[_i]; DuplicateDependenciesService.getPluginDuplicateDependencies(plugin, projectDevDependencies, duplicateDependencies); } return duplicateDependencies; }; DuplicateDependenciesService.getPluginDuplicateDependencies = function (plugin, projectDevDependencies, duplicateDependencies) { // First check for duplicate of inherited plugins DuplicateDependenciesService.getProjectDuplicateDependencies(plugin.path, duplicateDependencies); var pluginPackageJson = PackageJson_1.PackageJson.fromDirPath(plugin.path); var pluginDependencies = pluginPackageJson.getDependenciesPackageNames(); var pluginDuplicateDependencies = duplicateDependencies.get(plugin.fullname); if (!pluginDuplicateDependencies) { pluginDuplicateDependencies = new Set(); duplicateDependencies.set(plugin.fullname, pluginDuplicateDependencies); } for (var _i = 0, projectDevDependencies_1 = projectDevDependencies; _i < projectDevDependencies_1.length; _i++) { var projectDevDependency = projectDevDependencies_1[_i]; if (pluginDependencies.includes(projectDevDependency)) { pluginDuplicateDependencies.add(projectDevDependency); } } }; DuplicateDependenciesService.printDuplicatedDependencies = function (duplicateDependencies) { var hasDuplicates = false; duplicateDependencies.forEach(function (pluginDuplicateDependencies, plugin) { if (pluginDuplicateDependencies.size) { var pluginDuplicateDependenciesValue = Array.from(pluginDuplicateDependencies); hasDuplicates = true; console.info("Some dev dependencies are unnecessarily installed as their are already required by \"".concat(plugin, "\":\n - ").concat(pluginDuplicateDependenciesValue.join("\n - "), "\n")); } }); if (!hasDuplicates) { console.info("No duplicate dev dependencies found."); } }; return DuplicateDependenciesService; }()); exports.DuplicateDependenciesService = DuplicateDependenciesService;