get-deps-count.ts 953 B

1234567891011121314151617181920212223242526272829303132
  1. import { readFileSync } from 'node:fs'
  2. export function getDepsCount(files: string[] = []): Record<string, Record<string, string[]>> {
  3. const map: Record<string, JSON> = {}
  4. const depsCounter: Record<string, Record<string, string[]>> = {}
  5. for (const file of files) {
  6. const content = JSON.parse(readFileSync(file).toString('utf-8'))
  7. map[file] = content
  8. const deps = content.dependencies ?? {}
  9. const devDeps = content.devDependencies ?? {}
  10. const merged = { ...deps, ...devDeps }
  11. Object.keys(merged)
  12. .sort()
  13. .map((pkg) => {
  14. const pkgVersion = merged[pkg]
  15. if (!depsCounter[pkg]) {
  16. depsCounter[pkg] = { [pkgVersion]: [file] }
  17. return
  18. }
  19. if (!depsCounter[pkg][pkgVersion]) {
  20. depsCounter[pkg][pkgVersion] = [file]
  21. return
  22. }
  23. depsCounter[pkg][pkgVersion] = [...depsCounter[pkg][pkgVersion], file]
  24. })
  25. }
  26. return depsCounter
  27. }