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

feat(pnpm): dynamic version selection

Closes #6361
parent 04289fb1
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,7 @@ delete process.env.NPM_CONFIG_CACHE; ...@@ -20,7 +20,7 @@ delete process.env.NPM_CONFIG_CACHE;
describe('generateLockFile', () => { describe('generateLockFile', () => {
let config: PostUpdateConfig; let config: PostUpdateConfig;
beforeEach(() => { beforeEach(() => {
config = { cacheDir: 'some-cache-dir' }; config = { cacheDir: 'some-cache-dir', compatibility: { pnpm: '^2.0.0' } };
env.getChildProcessEnv.mockReturnValue(envMock.basic); env.getChildProcessEnv.mockReturnValue(envMock.basic);
}); });
it('generates lock files', async () => { it('generates lock files', async () => {
......
import { readFile } from 'fs-extra'; import { readFile } from 'fs-extra';
import { validRange } from 'semver';
import { quote } from 'shlex';
import { join } from 'upath'; import { join } from 'upath';
import { logger } from '../../../logger'; import { logger } from '../../../logger';
import { ExecOptions, exec } from '../../../util/exec'; import { ExecOptions, exec } from '../../../util/exec';
...@@ -23,7 +25,12 @@ export async function generateLockFile( ...@@ -23,7 +25,12 @@ export async function generateLockFile(
let stderr: string; let stderr: string;
let cmd = 'pnpm'; let cmd = 'pnpm';
try { try {
const preCommands = ['npm i -g pnpm']; let installPnpm = 'npm i -g pnpm';
const pnpmCompatibility = config.compatibility?.pnpm;
if (validRange(pnpmCompatibility)) {
installPnpm += `@${quote(pnpmCompatibility)}`;
}
const preCommands = [installPnpm];
const tagConstraint = await getNodeConstraint(config); const tagConstraint = await getNodeConstraint(config);
const execOptions: ExecOptions = { const execOptions: ExecOptions = {
cwd, cwd,
......
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