diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts index 4b0a360607d15830d2610e3fe796fc87506af28a..b957e78e03d6fdcefb7d437e77f7d9231a1dc4b4 100644 --- a/lib/manager/npm/post-update/index.ts +++ b/lib/manager/npm/post-update/index.ts @@ -1,5 +1,6 @@ import is from '@sindresorhus/is'; import deepmerge from 'deepmerge'; +import detectIndent from 'detect-indent'; import { dump, load } from 'js-yaml'; import upath from 'upath'; import { getGlobalConfig } from '../../../config/global'; @@ -167,9 +168,11 @@ export async function writeExistingFiles( } else { logger.debug(`Writing ${npmLock}`); let existingNpmLock: string; + let detectedIndent: string; let npmLockParsed: any; try { existingNpmLock = await getFile(npmLock); + detectedIndent = detectIndent(existingNpmLock).indent || ' '; npmLockParsed = JSON.parse(existingNpmLock); } catch (err) { logger.warn({ err }, 'Error parsing npm lock file'); @@ -217,7 +220,11 @@ export async function writeExistingFiles( } if (lockFileChanged) { logger.debug('Massaging npm lock file before writing to disk'); - existingNpmLock = JSON.stringify(npmLockParsed, null, 2); + existingNpmLock = JSON.stringify( + npmLockParsed, + null, + detectedIndent + ); } await outputFile(npmLockPath, existingNpmLock); } @@ -258,6 +265,8 @@ export async function writeUpdatedPackageFiles( continue; } logger.debug(`Writing ${String(packageFile.name)}`); + const detectedIndent = + detectIndent(packageFile.contents.toString()).indent || ' '; const massagedFile = JSON.parse(packageFile.contents.toString()); try { const { token } = hostRules.find({ @@ -279,7 +288,7 @@ export async function writeUpdatedPackageFiles( } await outputFile( upath.join(localDir, packageFile.name), - JSON.stringify(massagedFile) + JSON.stringify(massagedFile, null, detectedIndent) ); } } diff --git a/lib/manager/npm/update/locked-dependency/index.ts b/lib/manager/npm/update/locked-dependency/index.ts index f968303915510c84bd1ea8405a30894d6b722c22..e9dd8f6d29d8eed56a0393edda667f7f02cf7e1b 100644 --- a/lib/manager/npm/update/locked-dependency/index.ts +++ b/lib/manager/npm/update/locked-dependency/index.ts @@ -1,3 +1,4 @@ +import detectIndent from 'detect-indent'; import type { PackageJson } from 'type-fest'; import { logger } from '../../../../logger'; import { api as semver } from '../../../../versioning/npm'; @@ -46,6 +47,7 @@ export async function updateLockedDependency( } let packageJson: PackageJson; let packageLockJson: PackageLockOrEntry; + const detectedIndent = detectIndent(lockFileContent).indent || ' '; let newPackageJsonContent: string; try { packageJson = JSON.parse(packageFileContent); @@ -161,7 +163,11 @@ export async function updateLockedDependency( delete dependency.resolved; delete dependency.integrity; } - let newLockFileContent = JSON.stringify(packageLockJson, null, 2); + let newLockFileContent = JSON.stringify( + packageLockJson, + null, + detectedIndent + ); // iterate through the parent updates first for (const parentUpdate of parentUpdates) { const parentUpdateConfig = {