UNPKG

@trumbitta/nx-plugin-unused-deps

Version:

[![NPM Version](https://badge.fury.io/js/%40trumbitta%2Fnx-plugin-unused-deps.svg)](https://www.npmjs.com/@trumbitta/nx-plugin-unused-deps) [![License](https://img.shields.io/npm/l/@trumbitta/nx-plugin-unused-deps)]()

62 lines 2.81 kB
"use strict"; // Based on code by Philip Fulcher @PhilipJFulcher Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const devkit_1 = require("@nrwl/devkit"); const project_graph_1 = require("@nrwl/workspace/src/core/project-graph"); function default_1(tree, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const nxGraphDependencies = yield checkDeps(); const packageJson = devkit_1.readJson(tree, 'package.json'); const jsonFile = `.nx-plugin-unused-deps.json`; const packageIsNotDependedOn = (depName) => { if (depName.startsWith('@types/')) { // for @types/ packages, we actually want to check if the underlying package is depended on // ie: "@types/express" is depended on if "express" is depended on depName = depName.replace('@types/', ''); } const isDependedOn = nxGraphDependencies[`npm:${depName}`] != null; return !isDependedOn; }; const dependencies = { dependencies: Object.keys(packageJson.dependencies).filter(packageIsNotDependedOn), devDependencies: Object.keys(packageJson.devDependencies).filter(packageIsNotDependedOn), }; logDependencies(dependencies, options.json, jsonFile); if (options.fix) { updatePackageJson(tree, dependencies); } }); } exports.default = default_1; function updatePackageJson(tree, packageJsonDeps) { const { dependencies, devDependencies } = packageJsonDeps; devkit_1.removeDependenciesFromPackageJson(tree, dependencies, devDependencies); devkit_1.logger.info(`nx-plugin-unused-deps - updated package.json`); } function logDependencies(dependencies, toJson, jsonFile) { devkit_1.logger.log(dependencies); if (toJson) { devkit_1.writeJsonFile(jsonFile, dependencies); devkit_1.logger.info(`nx-plugin-unused-deps - unused dependencies written to:\n${jsonFile}`); } } function checkDeps(packageRecord = {}) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const graph = yield project_graph_1.createProjectGraphAsync(); Object.keys(graph.dependencies).forEach((projectName) => { const deps = graph.dependencies[projectName]; const libNames = deps.filter((dep) => dep.target.startsWith('npm')).map((dep) => dep.target); libNames.forEach((libName) => { if (packageRecord[libName] === undefined) { packageRecord[libName] = 1; } else { packageRecord[libName]++; } }); }); return packageRecord; }); } //# sourceMappingURL=generator.js.map