Skip to content
Snippets Groups Projects
Commit d4aec0ff authored by Rhys Arkins's avatar Rhys Arkins
Browse files

feat(npm): perform full install if file: references found

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
parent a47ffff3
No related branches found
No related tags found
No related merge requests found
...@@ -95,6 +95,7 @@ async function extractDependencies(content, packageFile, config) { ...@@ -95,6 +95,7 @@ async function extractDependencies(content, packageFile, config) {
let lernaDir; let lernaDir;
let lernaPackages; let lernaPackages;
let lernaClient; let lernaClient;
let skipInstalls = true;
const lernaJson = JSON.parse( const lernaJson = JSON.parse(
await platform.getFile(upath.join(path.dirname(packageFile), 'lerna.json')) await platform.getFile(upath.join(path.dirname(packageFile), 'lerna.json'))
); );
...@@ -138,6 +139,7 @@ async function extractDependencies(content, packageFile, config) { ...@@ -138,6 +139,7 @@ async function extractDependencies(content, packageFile, config) {
} }
} else if (dep.currentValue.startsWith('file:')) { } else if (dep.currentValue.startsWith('file:')) {
dep.skipReason = 'file'; dep.skipReason = 'file';
skipInstalls = false;
} else if (semver.isValid(dep.currentValue)) { } else if (semver.isValid(dep.currentValue)) {
dep.purl = `pkg:npm/${depName.replace('@', '%40')}`; dep.purl = `pkg:npm/${depName.replace('@', '%40')}`;
if (dep.currentValue === '*') { if (dep.currentValue === '*') {
...@@ -192,6 +194,7 @@ async function extractDependencies(content, packageFile, config) { ...@@ -192,6 +194,7 @@ async function extractDependencies(content, packageFile, config) {
lernaDir, lernaDir,
lernaClient, lernaClient,
lernaPackages, lernaPackages,
skipInstalls,
yarnWorkspacesPackages, yarnWorkspacesPackages,
}; };
} }
......
...@@ -102,6 +102,7 @@ Object { ...@@ -102,6 +102,7 @@ Object {
"packageJsonType": "app", "packageJsonType": "app",
"packageJsonVersion": undefined, "packageJsonVersion": undefined,
"pnpmShrinkwrap": undefined, "pnpmShrinkwrap": undefined,
"skipInstalls": false,
"yarnLock": undefined, "yarnLock": undefined,
"yarnWorkspacesPackages": undefined, "yarnWorkspacesPackages": undefined,
"yarnrc": undefined, "yarnrc": undefined,
...@@ -201,6 +202,7 @@ Object { ...@@ -201,6 +202,7 @@ Object {
"packageJsonType": "app", "packageJsonType": "app",
"packageJsonVersion": "1.0.0", "packageJsonVersion": "1.0.0",
"pnpmShrinkwrap": undefined, "pnpmShrinkwrap": undefined,
"skipInstalls": true,
"yarnLock": "yarn.lock", "yarnLock": "yarn.lock",
"yarnWorkspacesPackages": undefined, "yarnWorkspacesPackages": undefined,
"yarnrc": undefined, "yarnrc": undefined,
...@@ -219,6 +221,7 @@ Object { ...@@ -219,6 +221,7 @@ Object {
"packageJsonType": "app", "packageJsonType": "app",
"packageJsonVersion": "0.0.8", "packageJsonVersion": "0.0.8",
"pnpmShrinkwrap": undefined, "pnpmShrinkwrap": undefined,
"skipInstalls": true,
"yarnLock": undefined, "yarnLock": undefined,
"yarnWorkspacesPackages": Array [ "yarnWorkspacesPackages": Array [
"packages/*", "packages/*",
...@@ -320,6 +323,7 @@ Object { ...@@ -320,6 +323,7 @@ Object {
"packageJsonType": "app", "packageJsonType": "app",
"packageJsonVersion": "1.0.0", "packageJsonVersion": "1.0.0",
"pnpmShrinkwrap": undefined, "pnpmShrinkwrap": undefined,
"skipInstalls": true,
"yarnLock": undefined, "yarnLock": undefined,
"yarnWorkspacesPackages": undefined, "yarnWorkspacesPackages": undefined,
"yarnrc": undefined, "yarnrc": undefined,
...@@ -419,6 +423,7 @@ Object { ...@@ -419,6 +423,7 @@ Object {
"packageJsonType": "app", "packageJsonType": "app",
"packageJsonVersion": "1.0.0", "packageJsonVersion": "1.0.0",
"pnpmShrinkwrap": undefined, "pnpmShrinkwrap": undefined,
"skipInstalls": true,
"yarnLock": undefined, "yarnLock": undefined,
"yarnWorkspacesPackages": undefined, "yarnWorkspacesPackages": undefined,
"yarnrc": undefined, "yarnrc": undefined,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment