diff --git a/src/generateInheritedPackageJson.ts b/src/generateInheritedPackageJson.ts index 461080c..9fb912c 100644 --- a/src/generateInheritedPackageJson.ts +++ b/src/generateInheritedPackageJson.ts @@ -70,7 +70,7 @@ function shouldUpdate(mine: any, theirs: any) { let result = false; for (const [key, value] of Object.entries(theirs)) { - if (mine[key] !== value) { + if (!mine || mine[key] !== value) { result = true; } } diff --git a/src/updateCommand.ts b/src/updateCommand.ts index 6d1ad96..a26a1d8 100644 --- a/src/updateCommand.ts +++ b/src/updateCommand.ts @@ -12,7 +12,15 @@ export function updateCommand(cwd: string) { const { packageJsonPath, ...output } = info; const newLine = detectNewline(fs.readFileSync(info.packageJsonPath, 'utf-8')) || os.EOL; - + // Sort dependencies before outputing them like package managers do + ['dependencies', 'devDependencies'].map(function(key){ + if (output[key]) { + output[key] = Object.keys(output[key]).sort().reduce(function(newObject, packageName) { + newObject[packageName] = output[key][packageName]; + return newObject; + }, {}); + } + }); fs.writeFileSync( info.packageJsonPath, JSON.stringify(output, null, 2).replace(/\n/g, newLine) + newLine