Step 1: find the package that calls findDOMNode
scripts/find-finddomnode.mjs
// node scripts/find-finddomnode.mjs
// Lists every installed package whose built files call findDOMNode.
import { readdirSync, readFileSync, statSync, existsSync } from "node:fs";
import { join } from "node:path";
const root = join(process.cwd(), "node_modules");
const hits = new Map();
function walk(dir, pkg, depth = 0) {
if (depth > 6) return;
for (const name of readdirSync(dir)) {
if (name === "node_modules" || name.startsWith(".")) continue;
const full = join(dir, name);
const st = statSync(full);
if (st.isDirectory()) walk(full, pkg, depth + 1);
else if (/\.(c|m)?js$/.test(name) && st.size < 2_000_000) {
if (readFileSync(full, "utf8").includes("findDOMNode")) {
hits.set(pkg, (hits.get(pkg) ?? 0) + 1);
}
}
}
}
for (const name of readdirSync(root)) {
if (name.startsWith(".")) continue;
const scoped = name.startsWith("@") ? readdirSync(join(root, name)).map((n) => `${name}/${n}`) : [name];
for (const pkg of scoped) {
if (pkg === "react-dom") continue; // React's own copy, not a caller
const dir = join(root, pkg);
if (existsSync(join(dir, "package.json"))) walk(dir, pkg);
}
}
if (hits.size === 0) console.log("No package mentions findDOMNode.");
for (const [pkg, files] of hits) {
const { version } = JSON.parse(readFileSync(join(root, pkg, "package.json"), "utf8"));
console.log(`${pkg}@${version}: ${files} file(s)`);
}