Skip to content

Commit

Permalink
fix: replace read-package-tree with @npmcli/arborist (#3133)
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesHenry committed May 23, 2022
1 parent 5b2228f commit f1c10a4
Show file tree
Hide file tree
Showing 4 changed files with 12,328 additions and 10,138 deletions.
47 changes: 15 additions & 32 deletions commands/bootstrap/lib/has-dependency-installed.js
@@ -1,7 +1,7 @@
"use strict";

const log = require("npmlog");
const readPackageTree = require("read-package-tree");
const Arborist = require("@npmcli/arborist");
const semver = require("semver");

/** @typedef {Map<string, string>} InstalledDependencies dependency name -> installed version */
Expand Down Expand Up @@ -31,37 +31,20 @@ function hasDependencyInstalled(pkg, depName, needVersion) {
* @returns {Promise<InstalledDependencies>}
*/
function getInstalled(pkg) {
return new Promise((resolve, reject) => {
if (cache.has(pkg)) {
return resolve(cache.get(pkg));
}

readPackageTree(pkg.location, filterTopLevel, (err, { children }) => {
if (err) {
return reject(err);
}

/** @type {InstalledDependencies} */
const deps = new Map(children.map(({ package: { name, version } }) => [name, version]));
cache.set(pkg, deps);
resolve(deps);
});
});
}

/**
* @param {import("read-package-tree").Node} node
* @param {string} kidName
*/
function filterTopLevel(node, kidName) {
if (node.parent) {
return false;
if (cache.has(pkg)) {
return Promise.resolve(cache.get(pkg));
}
const arb = new Arborist({
path: pkg.location,
});
return arb.loadActual().then((tree) => {
/** @type {InstalledDependencies} */
const deps = new Map();

return Boolean(
(node.package.dependencies && node.package.dependencies[kidName]) ||
(node.package.devDependencies && node.package.devDependencies[kidName]) ||
(node.package.peerDependencies && node.package.peerDependencies[kidName]) ||
(node.package.optionalDependencies && node.package.optionalDependencies[kidName])
);
for (const [dependencyName, node] of tree.children.entries()) {
deps.set(dependencyName, node.version);
}
cache.set(pkg, deps);
return deps;
});
}
2 changes: 1 addition & 1 deletion commands/bootstrap/package.json
Expand Up @@ -45,6 +45,7 @@
"@lerna/symlink-binary": "file:../../utils/symlink-binary",
"@lerna/symlink-dependencies": "file:../../utils/symlink-dependencies",
"@lerna/validation-error": "file:../../core/validation-error",
"@npmcli/arborist": "5.2.0",
"dedent": "^0.7.0",
"get-port": "^5.1.1",
"multimatch": "^5.0.0",
Expand All @@ -53,7 +54,6 @@
"p-map": "^4.0.0",
"p-map-series": "^2.1.0",
"p-waterfall": "^2.1.1",
"read-package-tree": "^5.3.1",
"semver": "^7.3.4"
}
}

0 comments on commit f1c10a4

Please sign in to comment.