UNPKG

@speedy-js/depcost

Version:

[![npm version](https://badgen.net/npm/v/@speedy-js/depcost)](https://npm.im/@speedy-js/depcost)

62 lines (54 loc) 1.21 kB
const path = require('path') const globby = require('globby') const requirePkg = require('./require-pkg') function loadMonorepoConfig(cwd) { try { return require(`${cwd}/lerna.json`) } catch (_) { return requirePkg(cwd) } } /** * Load monorepo packages * * @param {string} cwd * @returns {Array<{ * relative: string, * dir: string, * name: string, * version: string, * [key: string]: any, * }>} */ module.exports = function (cwd) { const packages = loadMonorepoConfig(cwd).packages || [] const globPackages = [] const explicitPackages = [] packages.forEach(p => { if (p.includes('*')) { globPackages.push(p) } else { explicitPackages.push(p) } }) const resolved = globby.sync(globPackages, { cwd, onlyDirectories: true, globstar: false, deep: 1, }).concat(explicitPackages) return resolved.map(relative => { const dir = path.join(cwd, relative) const packageJson = requirePkg(dir) const { name } = packageJson const { version } = packageJson return { ...packageJson, relative, dir, name, version, } }) } module.exports.loadMonorepoConfig = loadMonorepoConfig