UNPKG

find-node-modules-import

Version:

Find specific node modules import statement in your source code

72 lines (69 loc) 2.32 kB
import meow from "meow"; import { filterModulesByBuiltinModules, filterModulesByModuleNames, findNodeModulesImport } from "./find-node-modules-import.js"; import { globby } from "globby"; import * as fs from "node:fs/promises"; export const cli = meow(` Usage $ find-node-modules-import [file|glob*] Options --module [String] filter the result by module name --builtinModules [Boolean] filter the result by Node.js builtin modules. Default: false --verbose [Boolean] show warning/error output. Default: false Examples # show all imports $ find-node-modules-import "src/**/*.{js, ts}" # show Node.js builtin modules $ find-node-modules-import "src/**/*.{js, ts}" --builtinModules # show specific module $ find-node-modules-import "src/**/*.{js, ts}" --module "lodash" `, { importMeta: import.meta, flags: { module: { type: "string", isMultiple: true }, builtinModules: { type: "boolean", default: false }, format: { type: "string", default: "compat" }, verbose: { type: "boolean", default: false } }, autoHelp: true, autoVersion: true }); export const run = async (input = cli.input, flags = cli.flags) => { const files = await globby(input); const filter = (results) => { if (flags.builtinModules) { return filterModulesByBuiltinModules(results); } else if (flags.module && flags.module.length > 0) { return filterModulesByModuleNames(results, flags.module); } return results; }; for (const file of files) { try { const code = await fs.readFile(file, "utf-8"); const modules = await findNodeModulesImport(code); filter(modules).forEach((result) => { console.log(`${file}:${result.loc.start.line}:${result.loc.start.column}\t${result.name}`); }); } catch (e) { if (flags.verbose) { console.error("Skip file", file, e); } } } return { exitStatus: 0, stdout: null, stderr: null }; }; //# sourceMappingURL=cli.js.map