turf/scripts/update-dependencies

70 lines
2.1 KiB
JavaScript
Executable File

#!/usr/bin/env node
const { loadJsonFileSync } = require("load-json-file");
const { writeJsonFileSync } = require("write-json-file");
const path = require("path");
const { glob } = require("glob");
// Update package.json
glob
.sync(path.join(__dirname, "..", "packages", "turf-*", "package.json"))
.forEach((packagePath) => {
const pckg = loadJsonFileSync(packagePath);
// pckg.dependencies = updateDependencies(pckg);
pckg.devDependencies = updateDevDependencies(pckg);
writeJsonFileSync(packagePath, pckg, { indent: 2 });
});
function entries(obj) {
return Object.keys(obj || {}).map((key) => [key, obj[key]]);
}
function updateDependencies(pckg) {
const dependencies = {};
new Map(entries(pckg.dependencies)).forEach((version, name) => {
// Update dependencies to Major releases
switch (name) {
case "geojson-rbush":
dependencies[name] = "2.x";
break;
case "topojson-client":
case "topojson-server":
dependencies[name] = "3.x";
break;
case "jsts":
case "jsts-es":
case "@turf/point-on-surface":
case "@turf/line-distance":
case "@turf/inside":
case "@turf/point-on-line":
case "@turf/nearest":
throw new Error(`${pckg.name} module has invalid dependency ${name}`);
default:
dependencies[name] = version;
}
});
// All modules will have helpers to handle the internal TypeScript definitions
if (pckg.name !== "@turf/helpers") dependencies["@turf/helpers"] = "^5.0.4";
return dependencies;
}
function updateDevDependencies(pckg) {
const devDependencies = {};
const dev = new Map(entries(pckg.devDependencies));
dev.delete("uglify-js");
dev.delete("@turf/helpers");
dev.delete("rollup-plugin-node-resolve");
dev.delete("rollup-plugin-uglify");
dev.delete("rollup-plugin-commonjs");
dev.delete("rollup-plugin-buble");
dev
.set("rollup", "*")
.set("tape", "*")
.set("@std/esm", "*")
.set("benchmark", "*")
.forEach((version, name) => {
devDependencies[name] = "*";
});
return devDependencies;
}