@ts-dev-tools/core
Version:
TS dev tools Core
59 lines (58 loc) • 3.53 kB
JavaScript
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;
;