Skip to content

Instantly share code, notes, and snippets.

@WomB0ComB0
Created August 15, 2024 20:50
Show Gist options
  • Save WomB0ComB0/71ef8fdd109d5b1a167a409454152a28 to your computer and use it in GitHub Desktop.
Save WomB0ComB0/71ef8fdd109d5b1a167a409454152a28 to your computer and use it in GitHub Desktop.
Check the difference between n dev/dependencies
import { readFileSync } from 'fs';
import { join } from 'path';
import { z } from 'zod';
const packages = readFileSync(join(__dirname, 'package.json'), 'utf8');
const schema = z.object({
devDependencies: z.record(z.string()),
dependencies: z.record(z.string()),
});
type DevDependencies = z.infer<typeof schema>['devDependencies'];
type Dependencies = z.infer<typeof schema>['dependencies'];
const devDependencies: DevDependencies = schema.parse(JSON.parse(packages)).devDependencies;
const dependencies: Dependencies = schema.parse(JSON.parse(packages)).dependencies;
let removeDupes = new Map([
...Object.entries(devDependencies),
...Object.entries(dependencies),
]);
const depInput: Dependencies = {
"<package>": "<version>"
}
const devInputs: DevDependencies = {
"<package>": "<version>",
}
let removeInputDupes = new Map([
...Object.entries(depInput),
...Object.entries(devInputs),
]);
const joinDev = new Map(Object.entries(devInputs).filter(([key, version]) =>
!removeDupes.has(key) || removeDupes.get(key) !== version
));
const joinDep = new Map(Object.entries(depInput).filter(([key, version]) =>
!removeDupes.has(key) || removeDupes.get(key) !== version
));
console.log(Object.fromEntries(joinDev));
console.log(Object.fromEntries(joinDep));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment