angular-cli/lib/packages.js
Hans 61dd440f4d chore(packages): move packages into their own scope. (#3413)
This will facilitate management of packages internally.
2016-12-05 17:44:35 -08:00

41 lines
1.3 KiB
JavaScript

'use strict';
const fs = require('fs');
const glob = require('glob');
const path = require('path');
const packageRoot = path.join(__dirname, '../packages');
// All the supported packages. Go through the packages directory and create a map of
// name => fullPath.
const packages =
glob.sync(path.join(packageRoot, '**/package.json'))
.filter(p => !p.match(/blueprints/))
.map(pkgPath => path.relative(packageRoot, path.dirname(pkgPath)))
.map(pkgName => {
return { name: pkgName, root: path.join(packageRoot, pkgName) };
})
.reduce((packages, pkg) => {
let pkgJson = JSON.parse(fs.readFileSync(path.join(pkg.root, 'package.json'), 'utf8'));
let name = pkgJson['name'];
packages[name] = {
dist: path.join(__dirname, '../dist', pkg.name),
packageJson: path.join(pkg.root, 'package.json'),
root: pkg.root,
relative: path.relative(path.dirname(__dirname), pkg.root),
main: path.resolve(pkg.root, 'src/index.ts')
};
return packages;
}, {});
module.exports = packages;
// If we run this from the command line, just output the list of modules neatly formatted.
if (require.main === module) {
// eslint-disable-next-line no-console
console.log(JSON.stringify(packages, null, 2));
}