UNPKG

node-tidy

Version:

A CLI tool to find and remove unused NPM packages and Install Missing packages in your Node.js projects.

37 lines (36 loc) 1.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const glob_1 = require("glob"); const getDependencies_1 = __importDefault(require("./getDependencies")); const module_1 = require("module"); async function findMissingPackages() { console.log("Scanning for missing packages..."); const files = (0, glob_1.globSync)("**/*.{js,jsx,ts,tsx}", { ignore: ["node_modules/**", "dist/**"], }); const usedPackages = new Set(); const importRegex = /\b(?:import(?:["'\s]*[\w*{}\n, ]+from\s*)?["']([^"']+)["']|require\(["']([^"']+)["']\))/g; for (const file of files) { const content = fs_1.default.readFileSync(file, "utf8"); let match; while ((match = importRegex.exec(content)) !== null) { const packageName = (match[1] || match[2] || "").split("/")[0]; // Extract the package name if (packageName && !packageName.startsWith(".")) { usedPackages.add(packageName); } } } const installedPackages = new Set([ ...(0, getDependencies_1.default)().dependencies, ...(0, getDependencies_1.default)().devDependencies, ]); const nodeBuiltinModules = new Set(module_1.builtinModules); // Find packages used in code but not installed const missingPackages = Array.from(usedPackages).filter((pkg) => !installedPackages.has(pkg) && !nodeBuiltinModules.has(pkg)); return missingPackages; } exports.default = findMissingPackages;