|
5 | 5 | fileHelpers = require('./fileHelpers'),
|
6 | 6 | logger = require("./logger").winstonLogger,
|
7 | 7 | Constants = require('./constants'),
|
8 |
| - process = require('process'), |
9 | 8 | utils = require('./utils'),
|
| 9 | + { get_version } = require('./usageReporting'), |
| 10 | + process = require('process'), |
10 | 11 | { spawn } = require('child_process'),
|
11 | 12 | util = require('util');
|
12 | 13 |
|
@@ -64,15 +65,30 @@ const packageInstall = (packageDir) => {
|
64 | 65 | logger.info(`Packages were installed locally successfully.`);
|
65 | 66 | resolve('Packages were installed successfully.');
|
66 | 67 | } else {
|
67 |
| - logger.error(`Some error occurred while installing packages. Error code ${code}`); |
| 68 | + logger.error(`Some error occurred while installing packages. Error code ${code}. Please read npm_install_debug.log for more info.`); |
68 | 69 | reject(`Packages were not installed successfully. Error code ${code}`);
|
69 | 70 | }
|
70 | 71 | };
|
71 | 72 | const nodeProcessErrorCallback = (error) => {
|
72 | 73 | logger.error(`Some error occurred while installing packages: %j`, error);
|
73 | 74 | reject(`Packages were not installed successfully. Error Description ${util.format('%j', error)}`);
|
74 | 75 | };
|
75 |
| - nodeProcess = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['install', '--loglevel', 'verbose', '>', '../npm_install_debug.log', '2>&1'], {cwd: packageDir, shell: true}); |
| 76 | + |
| 77 | + let nodeProcess; |
| 78 | + logger.debug(`Fetching npm version and its major version`); |
| 79 | + const npm_version = get_version('npm') |
| 80 | + const npm_major_version = utils.getMajorVersion(npm_version); |
| 81 | + logger.debug(`Fetched npm version: ${npm_version} and its major version: ${npm_major_version}`); |
| 82 | + |
| 83 | + // add --legacy-peer-deps flag while installing dependencies for npm v7+ |
| 84 | + // For more info please read "Peer Dependencies" section here -> https://github.blog/2021-02-02-npm-7-is-now-generally-available/ |
| 85 | + if (parseInt(npm_major_version) >= 7) { |
| 86 | + logger.debug(`Running NPM install command: npm install --legacy-peer-deps --loglevel verbose > ../npm_install_debug.log`); |
| 87 | + nodeProcess = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['install', '--legacy-peer-deps', '--loglevel', 'verbose', '>', '../npm_install_debug.log', '2>&1'], {cwd: packageDir, shell: true}); |
| 88 | + } else { |
| 89 | + logger.debug(`Running NPM install command: 'npm install --loglevel verbose > ../npm_install_debug.log'`); |
| 90 | + nodeProcess = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['install', '--loglevel', 'verbose', '>', '../npm_install_debug.log', '2>&1'], {cwd: packageDir, shell: true}); |
| 91 | + } |
76 | 92 | nodeProcess.on('close', nodeProcessCloseCallback);
|
77 | 93 | nodeProcess.on('error', nodeProcessErrorCallback);
|
78 | 94 | });
|
|
0 commit comments