fix(core): ensure yarn runs install with correct version (#17997)
This commit is contained in:
parent
21007d8922
commit
d0c37727c5
@ -23,7 +23,7 @@ export async function createSandbox(packageManager: PackageManager) {
|
||||
`Installing dependencies with ${packageManager}`
|
||||
).start();
|
||||
|
||||
const { install } = getPackageManagerCommand(packageManager);
|
||||
const { install, preInstall } = getPackageManagerCommand(packageManager);
|
||||
|
||||
const tmpDir = dirSync().name;
|
||||
try {
|
||||
@ -39,6 +39,10 @@ export async function createSandbox(packageManager: PackageManager) {
|
||||
);
|
||||
generatePackageManagerFiles(tmpDir, packageManager);
|
||||
|
||||
if (preInstall) {
|
||||
await execAndWait(preInstall, tmpDir);
|
||||
}
|
||||
|
||||
await execAndWait(install, tmpDir);
|
||||
|
||||
installSpinner.succeed();
|
||||
|
||||
@ -36,6 +36,7 @@ export function getPackageManagerCommand(
|
||||
): {
|
||||
install: string;
|
||||
exec: string;
|
||||
preInstall?: string;
|
||||
} {
|
||||
const [pmMajor, pmMinor] =
|
||||
getPackageManagerVersion(packageManager).split('.');
|
||||
@ -45,6 +46,9 @@ export function getPackageManagerCommand(
|
||||
const useBerry = +pmMajor >= 2;
|
||||
const installCommand = 'yarn install --silent';
|
||||
return {
|
||||
preInstall: useBerry
|
||||
? 'yarn set version stable'
|
||||
: 'yarn set version classic',
|
||||
install: useBerry
|
||||
? installCommand
|
||||
: `${installCommand} --ignore-scripts`,
|
||||
|
||||
@ -464,12 +464,20 @@ export function ensurePackage<T extends any = any>(
|
||||
|
||||
console.log(`Fetching ${pkg}...`);
|
||||
const packageManager = detectPackageManager();
|
||||
const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true';
|
||||
const preInstallCommand = getPackageManagerCommand(packageManager).preInstall;
|
||||
if (preInstallCommand) {
|
||||
// ensure package.json and repo in tmp folder is set to a proper package manager state
|
||||
execSync(preInstallCommand, {
|
||||
cwd: tempDir,
|
||||
stdio: isVerbose ? 'inherit' : 'ignore',
|
||||
});
|
||||
}
|
||||
let addCommand = getPackageManagerCommand(packageManager).addDev;
|
||||
if (packageManager === 'pnpm') {
|
||||
addCommand = 'pnpm add -D'; // we need to ensure that we are not using workspace command
|
||||
}
|
||||
|
||||
const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true';
|
||||
execSync(`${addCommand} ${pkg}@${requiredVersion}`, {
|
||||
cwd: tempDir,
|
||||
stdio: isVerbose ? 'inherit' : 'ignore',
|
||||
|
||||
@ -15,6 +15,7 @@ const execAsync = promisify(exec);
|
||||
export type PackageManager = 'yarn' | 'pnpm' | 'npm';
|
||||
|
||||
export interface PackageManagerCommands {
|
||||
preInstall?: string;
|
||||
install: string;
|
||||
ciInstall: string;
|
||||
add: string;
|
||||
@ -64,6 +65,9 @@ export function getPackageManagerCommand(
|
||||
const useBerry = gte(yarnVersion, '2.0.0');
|
||||
|
||||
return {
|
||||
preInstall: useBerry
|
||||
? 'yarn set version stable'
|
||||
: 'yarn set version classic',
|
||||
install: 'yarn',
|
||||
ciInstall: useBerry
|
||||
? 'yarn install --immutable'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user