geenee-spell
Version:
regenerates project code based upon settings and a template
39 lines (38 loc) • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updatePackageJson = void 0;
const { removeNpmDependencyPrefix } = require('magicalstrings').removeNpmDependencyPrefix;
const fs = require('fs-extra');
const semverGt = require('semver/functions/gt');
async function updatePackageJson(codeDir, starter) {
const codePackageJsonPath = `${codeDir}/package.json`;
if (await fs.pathExists(codePackageJsonPath)) {
const codePackageJson = await fs.readJson(codePackageJsonPath);
const starterPackageJsonPath = `${starter}/package.json`;
const starterPackageJson = await fs.readJson(starterPackageJsonPath);
const codeDependencies = codePackageJson.dependencies;
const starterDependencies = starterPackageJson.dependencies;
Object.keys(starterDependencies).map(dependencyFile => {
const starterDependency = removeNpmDependencyPrefix(starterDependencies[dependencyFile]);
const codeDependency = removeNpmDependencyPrefix(codeDependencies[dependencyFile]);
if (codeDependency === '*')
return;
if (!codeDependency || semverGt(starterDependency, codeDependency)) {
codeDependencies[dependencyFile] = starterDependencies[dependencyFile];
}
});
const codeDevDependencies = codePackageJson.devDependencies;
const starterDevDependencies = starterPackageJson.devDependencies;
Object.keys(starterDevDependencies).map(dependencyFile => {
const starterDependency = removeNpmDependencyPrefix(starterDevDependencies[dependencyFile]);
const codeDependency = removeNpmDependencyPrefix(codeDevDependencies[dependencyFile]);
if (codeDependency === '*')
return;
if (!codeDependency || semverGt(starterDependency, codeDependency)) {
codeDevDependencies[dependencyFile] = starterDevDependencies[dependencyFile];
}
});
await fs.writeJson(codePackageJsonPath, codePackageJson, { spaces: 2 });
}
}
exports.updatePackageJson = updatePackageJson;