UNPKG

@backstage/cli

Version:

CLI for developing Backstage plugins and apps

76 lines (72 loc) 2.08 kB
'use strict'; var minimatch = require('minimatch'); var getPackages = require('@manypkg/get-packages'); var errors = require('../errors.cjs.js'); var yarn = require('../yarn.cjs.js'); var run = require('../run.cjs.js'); const DEP_TYPES = [ "dependencies", "devDependencies", "peerDependencies", "optionalDependencies" ]; async function fetchPackageInfo(name) { const yarnVersion = await yarn.detectYarnVersion(); const cmd = yarnVersion === "classic" ? ["info"] : ["npm", "info"]; try { const { stdout: output } = await run.execFile( "yarn", [...cmd, "--json", name], { shell: true } ); if (!output) { throw new errors.NotFoundError( `No package information found for package ${name}` ); } if (yarnVersion === "berry") { return JSON.parse(output); } const info = JSON.parse(output); if (info.type !== "inspect") { throw new Error(`Received unknown yarn info for ${name}, ${output}`); } return info.data; } catch (error) { if (yarnVersion === "classic") { throw error; } if (error?.stdout.includes("Response Code: 404")) { throw new errors.NotFoundError( `No package information found for package ${name}` ); } throw error; } } async function mapDependencies(targetDir, pattern) { const { packages, root } = await getPackages.getPackages(targetDir); packages.push(root); const dependencyMap = /* @__PURE__ */ new Map(); for (const pkg of packages) { const deps = DEP_TYPES.flatMap( (t) => Object.entries(pkg.packageJson[t] ?? {}) ); for (const [name, range] of deps) { if (minimatch.minimatch(name, pattern)) { dependencyMap.set( name, (dependencyMap.get(name) ?? []).concat({ range, name: pkg.packageJson.name, location: pkg.dir }) ); } } } return dependencyMap; } exports.fetchPackageInfo = fetchPackageInfo; exports.mapDependencies = mapDependencies; //# sourceMappingURL=packages.cjs.js.map