UNPKG

spinjs

Version:

[![Join the chat at https://gitter.im/sysgears/spinjs](https://badges.gitter.im/sysgears/spinjs.svg)](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![npm version](https://badge.fury.io/js/spi

29 lines (25 loc) 810 B
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;