diff --git a/packages/yarn-plugin/package.json b/packages/yarn-plugin/package.json index 1df88d001a..ed66832e27 100644 --- a/packages/yarn-plugin/package.json +++ b/packages/yarn-plugin/package.json @@ -34,7 +34,7 @@ "@backstage/release-manifests": "workspace:^", "@yarnpkg/core": "^4.0.3", "@yarnpkg/fslib": "^3.0.2", - "chalk": "^4.0.0", + "@yarnpkg/plugin-pack": "^4.0.0", "lodash": "^4.17.21", "semver": "^7.6.0" }, diff --git a/packages/yarn-plugin/report.api.md b/packages/yarn-plugin/report.api.md index f0300ec9a1..928703ed3e 100644 --- a/packages/yarn-plugin/report.api.md +++ b/packages/yarn-plugin/report.api.md @@ -3,9 +3,10 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { Hooks } from '@yarnpkg/plugin-pack'; import { Plugin as Plugin_2 } from '@yarnpkg/core'; // @public (undocumented) -const plugin: Plugin_2; +const plugin: Plugin_2; export default plugin; ``` diff --git a/packages/yarn-plugin/src/handlers/beforeWorkspacePacking.ts b/packages/yarn-plugin/src/handlers/beforeWorkspacePacking.ts index 3221400f48..fbdea3fa34 100644 --- a/packages/yarn-plugin/src/handlers/beforeWorkspacePacking.ts +++ b/packages/yarn-plugin/src/handlers/beforeWorkspacePacking.ts @@ -15,7 +15,6 @@ */ import { Descriptor, Workspace, structUtils } from '@yarnpkg/core'; -import { some } from 'lodash'; import { bindBackstageVersion, getCurrentBackstageVersion, @@ -76,9 +75,11 @@ export const beforeWorkspacePacking = async ( } if ( - some( - ['dependencies', 'devDependencies', 'optionalDependencies'], - dependencyType => some(rawManifest[dependencyType], hasBackstageVersion), + ['dependencies', 'devDependencies', 'optionalDependencies'].some( + dependencyType => + Object.values(rawManifest[dependencyType] ?? {}).some( + hasBackstageVersion, + ), ) ) { throw new Error( diff --git a/packages/yarn-plugin/src/index.ts b/packages/yarn-plugin/src/index.ts index f548463829..9c20e9a45c 100644 --- a/packages/yarn-plugin/src/index.ts +++ b/packages/yarn-plugin/src/index.ts @@ -22,16 +22,21 @@ */ import { Plugin, semverUtils, YarnVersion } from '@yarnpkg/core'; -import chalk from 'chalk'; +import { Hooks } from '@yarnpkg/plugin-pack'; import { beforeWorkspacePacking } from './handlers/beforeWorkspacePacking'; import { BackstageResolver } from './resolver/BackstageResolver'; +// All dependencies of the yarn plugin are bundled during the build. Chalk +// triples the size of the plugin bundle when included, so we avoid the +// dependency by hard-coding the ANSI escape codes for the one bit of formatting +// we need. +const RED_BOLD = `\u001B[31;1m`; +const RESET = '\u001B[0m'; + 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".`, + `${RED_BOLD}Unsupported yarn version${RESET}: 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(); } @@ -39,7 +44,7 @@ if (!semverUtils.satisfiesWithPrereleases(YarnVersion, '^4.1.1')) { /** * @public */ -const plugin: Plugin = { +const plugin: Plugin = { hooks: { beforeWorkspacePacking, }, diff --git a/packages/yarn-plugin/src/util.ts b/packages/yarn-plugin/src/util.ts index df7ed75e0f..5fd0091b2b 100644 --- a/packages/yarn-plugin/src/util.ts +++ b/packages/yarn-plugin/src/util.ts @@ -16,7 +16,7 @@ import { ppath, xfs } from '@yarnpkg/fslib'; import { valid as semverValid } from 'semver'; -import { memoize } from 'lodash'; +import memoize from 'lodash/memoize'; import { getManifestByVersion as getManifestByVersionBase } from '@backstage/release-manifests'; import { BACKSTAGE_JSON, findPaths } from '@backstage/cli-common'; import { Descriptor, structUtils } from '@yarnpkg/core'; diff --git a/yarn.lock b/yarn.lock index d272ce009c..3fba088f74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45427,7 +45427,7 @@ __metadata: "@yarnpkg/builder": ^4.0.0 "@yarnpkg/core": ^4.0.3 "@yarnpkg/fslib": ^3.0.2 - chalk: ^4.0.0 + "@yarnpkg/plugin-pack": ^4.0.0 lodash: ^4.17.21 nodemon: ^3.0.1 semver: ^7.6.0