spinjs
Version:
[](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [ • 810 B
text/typescript
import * as fs from 'fs';
import { RequireFunction } from './createRequire';
export interface Dependencies {
[x: string]: string;
}
const getDeps = (packageJsonPath: string, requireDep: RequireFunction, deps: Dependencies): Dependencies => {
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const pkgDeps: any = Object.keys(pkg.dependencies || {});
let result = { ...deps };
for (const dep of pkgDeps) {
if (!dep.startsWith('.') && !result[dep]) {
let depPkg;
try {
depPkg = requireDep.resolve(dep + '/package.json');
} catch (e) {}
if (depPkg) {
result[dep] = depPkg;
const subDeps = getDeps(depPkg, requireDep, result);
result = { ...result, ...subDeps };
}
}
}
return result;
};
export default getDeps;