Last active
March 11, 2021 23:00
-
-
Save n1ru4l/70e496d743e4530692400a816dbbf6f6 to your computer and use it in GitHub Desktop.
Revisions
-
n1ru4l revised this gist
Dec 3, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,7 +3,7 @@ * version ranges across packages inside a mono repository. */ import fs from "fs"; import glob from "glob"; // yarn add -W -E -E -D [email protected] import { promisify } from "util"; const globP = promisify(glob); -
n1ru4l revised this gist
Dec 3, 2020 . No changes.There are no files selected for viewing
-
n1ru4l created this gist
Dec 3, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,47 @@ /** * This is a simple script for detecting conflicting * version ranges across packages inside a mono repository. */ import fs from "fs"; import glob from "glob"; // yarn add -W -E -D [email protected] import { promisify } from "util"; const globP = promisify(glob); const main = async () => { const filePaths = await globP("**/package.json", { root: process.cwd(), ignore: ["**/node_modules/**", "**/dist/**"], }); const moduleMap = new Map<string, Set<string>>(); const gatherDependencies = (record: { [key: string]: string }) => { for (const [packageName, version] of Object.entries(record)) { let moduleVersions = moduleMap.get(packageName); if (moduleVersions === undefined) { const newSet = new Set<string>(); moduleMap.set(packageName, newSet); moduleVersions = newSet; } moduleVersions.add(version); } }; for (const filePath of filePaths) { const obj = JSON.parse(fs.readFileSync(filePath, "utf-8")); if (obj.dependencies) { gatherDependencies(obj.dependencies); } if (obj.devDependencies) { gatherDependencies(obj.devDependencies); } } for (const [packageName, versions] of moduleMap.entries()) { if (versions.size <= 1) { continue; } console.log(`${packageName}`, Array.from(versions).join(", ")); } }; main();