From d4aec0ff767aca9509cd4345ca5fb526c987cee4 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 17 Aug 2018 08:22:41 +0200 Subject: [PATCH] feat(npm): perform full install if file: references found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit npm’s —package-lock-only implementation seems to have a bug and produces incorrect lock files when file: references are present. If file: dependencies are detected, skipInstalls is set to false. Closes #2401 --- lib/manager/npm/extract/index.js | 3 +++ test/manager/npm/extract/__snapshots__/index.spec.js.snap | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index 2c2224f5a3..90b0fd9314 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -95,6 +95,7 @@ async function extractDependencies(content, packageFile, config) { let lernaDir; let lernaPackages; let lernaClient; + let skipInstalls = true; const lernaJson = JSON.parse( await platform.getFile(upath.join(path.dirname(packageFile), 'lerna.json')) ); @@ -138,6 +139,7 @@ async function extractDependencies(content, packageFile, config) { } } else if (dep.currentValue.startsWith('file:')) { dep.skipReason = 'file'; + skipInstalls = false; } else if (semver.isValid(dep.currentValue)) { dep.purl = `pkg:npm/${depName.replace('@', '%40')}`; if (dep.currentValue === '*') { @@ -192,6 +194,7 @@ async function extractDependencies(content, packageFile, config) { lernaDir, lernaClient, lernaPackages, + skipInstalls, yarnWorkspacesPackages, }; } diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index 06582bb4bf..6a384c9766 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -102,6 +102,7 @@ Object { "packageJsonType": "app", "packageJsonVersion": undefined, "pnpmShrinkwrap": undefined, + "skipInstalls": false, "yarnLock": undefined, "yarnWorkspacesPackages": undefined, "yarnrc": undefined, @@ -201,6 +202,7 @@ Object { "packageJsonType": "app", "packageJsonVersion": "1.0.0", "pnpmShrinkwrap": undefined, + "skipInstalls": true, "yarnLock": "yarn.lock", "yarnWorkspacesPackages": undefined, "yarnrc": undefined, @@ -219,6 +221,7 @@ Object { "packageJsonType": "app", "packageJsonVersion": "0.0.8", "pnpmShrinkwrap": undefined, + "skipInstalls": true, "yarnLock": undefined, "yarnWorkspacesPackages": Array [ "packages/*", @@ -320,6 +323,7 @@ Object { "packageJsonType": "app", "packageJsonVersion": "1.0.0", "pnpmShrinkwrap": undefined, + "skipInstalls": true, "yarnLock": undefined, "yarnWorkspacesPackages": undefined, "yarnrc": undefined, @@ -419,6 +423,7 @@ Object { "packageJsonType": "app", "packageJsonVersion": "1.0.0", "pnpmShrinkwrap": undefined, + "skipInstalls": true, "yarnLock": undefined, "yarnWorkspacesPackages": undefined, "yarnrc": undefined, -- GitLab