const fs = require("fs") const path = require("path") const MONOREPO_ROOT = "packages" const packages = getPackages() function getPackages() { if (fs.existsSync(MONOREPO_ROOT)) { return fs.readdirSync(MONOREPO_ROOT).map(pkg => path.join(MONOREPO_ROOT, pkg)) } else { return ["./"] } } function pinDeps(dependencies) { for (let dependency in dependencies) { if (dependency.startsWith("@budibase")) { dependencies[dependency] = dependencies[dependency].replace("^", "") } } return dependencies } // iterate over the monorepo packages for (let pkgPath of packages) { // only directories if (fs.statSync(pkgPath).isDirectory()) { // get the package JSON file const pkgJsonPath = path.join(pkgPath, "package.json") if (!fs.existsSync(pkgJsonPath)) { continue } const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath)) // find any budibase dependencies, and pin them pkgJson.dependencies = pinDeps(pkgJson.dependencies) pkgJson.devDependencies = pinDeps(pkgJson.devDependencies) // update the package JSON files fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2)) } } console.log("Pinned dev versions for budibase packages successfully.")