From 630b5c41f1ea86a523c4eea98a9f534342bde289 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 15:07:10 +0100 Subject: [PATCH] add peer dependency check --- scripts/prepublish-checks.mjs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/scripts/prepublish-checks.mjs b/scripts/prepublish-checks.mjs index 93f77c5..84b1630 100644 --- a/scripts/prepublish-checks.mjs +++ b/scripts/prepublish-checks.mjs @@ -3,6 +3,8 @@ import boxen from "boxen"; import dedent from "dedent"; import { readFile } from 'fs/promises'; +import { globalPackages as globalManagerPackages } from "@storybook/manager/globals"; +import { globalPackages as globalPreviewPackages } from "@storybook/preview/globals"; const packageJson = await readFile('./package.json', 'utf8').then(JSON.parse); @@ -55,4 +57,30 @@ if ((await $`cat README.md | grep -E ${readmeTestStrings}`.exitCode) == 0) { exitCode = 1; } +/** + * Check that globalized packages are not incorrectly listed as peer dependencies + */ +const peerDependencies = Object.keys(packageJson.peerDependencies || {}); +const globalPackages = [...globalManagerPackages, ...globalPreviewPackages]; +peerDependencies.forEach((dependency) => { + if(globalPackages.includes(dependency)) { + console.error( + boxen( + dedent` + ${chalk.red.bold("Unnecessary peer dependency")} + + ${chalk.red(dedent`You have a peer dependency on ${chalk.bold(dependency)} which is most likely unnecessary + as that is provided by Storybook directly. + Check the "bundling" section in README.md for more information. + If you are absolutely sure you are doing it correct, you should remove this check from scripts/prepublish-checks.mjs.`)} + `, + { padding: 1, borderColor: "red" } + ) + ); + + exitCode = 1; + + } +}) + process.exit(exitCode);