From a8bd40162c55b9311438e7fd95b55688c213459a Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Tue, 23 Apr 2024 10:01:22 +0100 Subject: [PATCH] yarn-plugin: validate version of yarn in yarn plugin Signed-off-by: MT Lewis --- packages/yarn-plugin/package.json | 1 + packages/yarn-plugin/src/index.ts | 13 ++++++++++++- yarn.lock | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/yarn-plugin/package.json b/packages/yarn-plugin/package.json index ad42bdba23..fd70dc8600 100644 --- a/packages/yarn-plugin/package.json +++ b/packages/yarn-plugin/package.json @@ -34,6 +34,7 @@ "@backstage/release-manifests": "workspace:^", "@yarnpkg/core": "^4.0.3", "@yarnpkg/fslib": "^3.0.2", + "chalk": "^4.0.0", "semver": "^7.6.0" }, "devDependencies": { diff --git a/packages/yarn-plugin/src/index.ts b/packages/yarn-plugin/src/index.ts index 6c1c805fd8..f548463829 100644 --- a/packages/yarn-plugin/src/index.ts +++ b/packages/yarn-plugin/src/index.ts @@ -21,10 +21,21 @@ * @packageDocumentation */ -import { Plugin } from '@yarnpkg/core'; +import { Plugin, semverUtils, YarnVersion } from '@yarnpkg/core'; +import chalk from 'chalk'; import { beforeWorkspacePacking } from './handlers/beforeWorkspacePacking'; import { BackstageResolver } from './resolver/BackstageResolver'; +if (!semverUtils.satisfiesWithPrereleases(YarnVersion, '^4.1.1')) { + console.error(); + console.error( + `${chalk.bold.red( + 'Unsupported yarn version.', + )}: The Backstage yarn plugin only works with yarn ^4.1.1. Please upgrade yarn, or remove this plugin with "yarn plugin remove @yarnpkg/plugin-backstage".`, + ); + console.error(); +} + /** * @public */ diff --git a/yarn.lock b/yarn.lock index f50727e805..afe89e4263 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44721,6 +44721,7 @@ __metadata: "@yarnpkg/builder": ^4.0.0 "@yarnpkg/core": ^4.0.3 "@yarnpkg/fslib": ^3.0.2 + chalk: ^4.0.0 nodemon: ^3.0.1 semver: ^7.6.0 languageName: unknown