Skip to content
This repository has been archived by the owner on Mar 21, 2022. It is now read-only.

Commit

Permalink
feat: read consumer package.json
Browse files Browse the repository at this point in the history
  • Loading branch information
cgreene-st committed Mar 2, 2022
1 parent 44db6cb commit d535b18
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
46 changes: 43 additions & 3 deletions lib/cli.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs')
const { readFileSync, writeFileSync } = require('fs')
const meow = require('meow')
const ora = require('ora')
const chalk = require('chalk')
const pkgUp = require('pkg-up')
const DependencyReport = require('./dependency-report')

const pkg = JSON.parse(readFileSync(pkgUp.sync(), 'utf8'))

// Since we're CPU bound, loading lots of files at the same time just hurts performance
let spinner

Expand Down Expand Up @@ -46,10 +49,42 @@ function toJSON(obj) {
return JSON.stringify(obj, null, 2)
}

function hasPackage(deps = {}, name) {
for (const [key] of Object.entries(deps)) {
if (key === name) return true
}
return false
}

function findPackageVersion(deps = {}, name) {
for (const [key, value] of Object.entries(deps)) {
if (key === name) {
return value
}
}
}

function getVersion(name) {
let version
// Try deps
if (hasPackage(pkg.dependencies, name)) {
version = findPackageVersion(pkg.dependencies, name)
}
// Try peerDeps
if (!version && hasPackage(pkg.peerDependencies, name)) {
version = findPackageVersion(pkg.peerDependencies, name)
}
// Try devDeps
if (!version && hasPackage(pkg.devDependencies, name)) {
version = findPackageVersion(pkg.devDependencies, name)
}
return version
}

function output(result) {
const payload = toJSON(result)
if (cli.flags.outFile) {
fs.writeFileSync(cli.flags.outFile, payload)
writeFileSync(cli.flags.outFile, payload)
}
console.log(payload)
}
Expand Down Expand Up @@ -102,7 +137,12 @@ async function main() {
const result = packages.map(pack => pack.exportReport(inputExports))
output(result)
} else {
const result = packages.map(pack => pack.toPlainObject())
const result = packages.map(pack => {
const version = getVersion(pack.name)
.replace('^', '')
.replace('~', '')
return { version, ...pack.toPlainObject() }
})
// Const result = packages.map(pack => pack.usageReport())
// console.log(toJSON(result))
output(result)
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"chalk": "^2.3.1",
"fs-extra": "^5.0.0",
"globby": "^7.1.1",
"pkg-up": "^3.1.0",
"meow": "^4.0.0",
"minimatch": "^3.0.4",
"ora": "^2.0.0",
Expand Down

0 comments on commit d535b18

Please sign in to comment.