@speedy-js/depcost
Version:
[](https://npm.im/@speedy-js/depcost)
62 lines (54 loc) • 1.21 kB
JavaScript
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