turf/scripts/update-dependencies
2017-11-26 23:27:57 -08:00

76 lines
2.5 KiB
JavaScript
Executable File

#!/usr/bin/env node
const load = require('load-json-file');
const write = 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 = load.sync(packagePath);
pckg.dependencies = updateDependencies(pckg);
pckg.devDependencies = updateDevDependencies(pckg);
write.sync(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 v5.x
switch (name) {
case 'geojson-rbush':
dependencies[name] = '2.1.0';
break;
case 'topojson-client':
case 'topojson-server':
dependencies[name] = '3.x';
break;
// JSTS based modules:
case '@turf/buffer':
case '@turf/intersect':
case '@turf/union':
case '@turf/difference':
case '@turf/dissolve':
case '@turf/hex-grid':
case '@turf/mask':
case '@turf/square-grid':
case '@turf/triangle-grid':
case '@turf/interpolate':
dependencies[name] = '*';
break;
case 'jsts':
case 'jsts-es':
case '@turf/point-on-surface':
case '@turf/line-distance':
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('rollup-plugin-uglify');
dev.delete('uglify-js');
dev.delete('@turf/helpers');
dev.set('rollup', '*')
.set('tape', '*')
.set('@std/esm', '*')
.set('benchmark', '*').forEach((version, name) => {
devDependencies[name] = '*';
});
return devDependencies;
}