@vis.gl/dev-tools
Version:
Dev tools for vis.gl frameworks
38 lines • 1.31 kB
JavaScript
import fs from 'fs';
import path from 'path';
const modules = [];
const dependencies = {};
for (const item of fs.readdirSync('./modules')) {
const itemPath = path.join('./modules', item);
if (fs.statSync(itemPath).isDirectory()) {
const packageFile = path.join(itemPath, 'package.json');
const tsconfigFile = path.join(itemPath, 'tsconfig.json');
if (!fs.existsSync(packageFile)) {
// Not a package
continue;
}
modules.push(itemPath);
const tsconfigContent = fs.readFileSync(tsconfigFile, 'utf8').replace(/\/\/.*/gm, '');
const tsconfig = JSON.parse(tsconfigContent);
dependencies[itemPath] = {
order: -1,
deps: (tsconfig.references || []).map((d) => path.join(itemPath, d.path))
};
}
}
for (const key in dependencies) {
resolveOrder(key);
}
console.log(modules.sort((k1, k2) => dependencies[k1].order - dependencies[k2].order).join(' '));
function resolveOrder(key) {
const item = dependencies[key];
if (item.order >= 0) {
return item.order;
}
const order = dependencies[key].deps.reduce((max, d) => {
return Math.max(max, resolveOrder(d));
}, -1) + 1;
item.order = order;
return order;
}
//# sourceMappingURL=build-order.js.map