From ae622159366b4cc37f84e5ee65e1a28587d256fa Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 28 Jun 2018 12:33:45 +0200 Subject: [PATCH] feat(npm): lerna lockFile maintenance Adds support for lock file maintenance when lerna is in use. Closes #1974 --- lib/manager/npm/post-update/index.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/manager/npm/post-update/index.js b/lib/manager/npm/post-update/index.js index 8da96c9e3c..ad606f9b95 100644 --- a/lib/manager/npm/post-update/index.js +++ b/lib/manager/npm/post-update/index.js @@ -26,15 +26,13 @@ function determineLockFileDirs(config, packageFiles) { for (const upgrade of config.upgrades) { if (upgrade.type === 'lockFileMaintenance') { - // TODO: support lerna // Return every directory that contains a lockfile for (const packageFile of packageFiles.npm) { if ( packageFile.lernaDir && (packageFile.npmLock || packageFile.yarnLock) ) { - logger.info('Skipping lerna lockFileMaintenance - unsupported'); - // TODO: lernaDirs.push(packageFile.lernaDir); + lernaDirs.push(packageFile.lernaDir); } else { yarnLockDirs.push(packageFile.yarnLock); npmLockDirs.push(packageFile.npmLock); @@ -460,17 +458,16 @@ async function getAdditionalFiles(config, packageFiles) { for (const lernaDir of dirs.lernaDirs) { let lockFile; - if (config.lernaClient === 'npm') { - lockFile = config.npmLock || 'package-lock.json'; - } else { - lockFile = config.yarnLock || 'yarn.lock'; - } - logger.debug( - { lernaClient: config.lernaClient, lockFile }, - 'Generating lock files using lerna' + logger.debug(`Finding package.json for lerna directory "${lernaDir}"`); + const lernaPackageFile = packageFiles.npm.find( + p => path.dirname(p.packageFile) === lernaDir ); + if (!lernaPackageFile) { + logger.debug('No matching package.json found'); + throw new Error('lerna-no-lockfile'); + } const res = await lerna.generateLockFiles( - config.lernaClient, + lernaPackageFile.lernaClient, upath.join(config.tmpDir.path, lernaDir), env ); -- GitLab