您可以使用环境变量在 Storybook 中更改其在不同“模式”下的行为。如果您提供的环境变量以 STORYBOOK_
为前缀,则它将在使用 Webpack 时在 process.env
中可用,或者在使用 Vite 构建器时在 import.meta.env
中可用。
💡不要在 Storybook 中存储任何秘密(例如,私有 API 密钥)或其他类型的敏感信息。环境变量嵌入到构建中,这意味着任何人都可以通过检查您的文件来查看它们。
然后,我们可以在我们的预览 JavaScript 代码中的任何地方访问这些环境变量,如下所示
您还可以使用替换 %STORYBOOK_X%
在自定义 <head>
/<body>
中访问这些变量,例如:%STORYBOOK_THEME%
将变为 red
。
💡如果您在 JavaScript 中使用环境变量作为属性或值,您可能需要添加引号,因为该值将直接插入,例如:<link rel="stylesheet" href="%STORYBOOK_STYLE_URL%" />
。
您还可以使用 .env
文件在不同模式下更改 Storybook 的行为。例如,如果您将具有以下内容的 .env
文件添加到您的项目中
然后,您可以在任何地方访问此环境变量,甚至在您的故事中
MyComponent.stories.ts|tsx
默认情况下,Storybook 提供了一个 Vite 构建器,它不会输出 Node.js 全局变量,如 process.env
。要在 Storybook 中访问环境变量(例如,STORYBOOK_
,VITE_
),您可以使用 import.meta.env
。例如
MyComponent.stories.ts|tsx
ℹ️您还可以为特定模式使用特定文件。添加一个 .env.development
或 .env.production
来将不同的值应用于您的环境变量。
您也可以在您 构建 Storybook 时使用 build-storybook
传递这些环境变量。
然后它们将被硬编码到 Storybook 的静态版本中。
此外,您可以扩展您的 Storybook 配置文件(即,.storybook/main.js|.ts
)并提供一个配置字段,您可以使用它来定义特定变量(例如,API URL)。例如
当 Storybook 加载时,它将使您能够像使用 env
文件一样在您的故事中访问它们
MyComponent.stories.ts|tsx
Storybook 允许您选择要预览故事的浏览器。可以通过 .env
文件条目或直接在您的 storybook
脚本中进行选择。
下表列出了可用的选项
浏览器 | 示例 |
---|
Safari | BROWSER="safari" |
Firefox | BROWSER="firefox" |
Chromium | BROWSER="chromium" |
💡默认情况下,Storybook 会在启动过程中打开一个新的 Chrome 窗口。如果您没有安装 Chrome,请确保包含以下选项之一,或相应地设置您的默认浏览器。
如果您尝试使用框架特定的环境变量(例如,VUE_APP_
),您可能会遇到问题,主要原因是 Storybook 和您的框架可能具有特定的配置,并且可能无法识别和使用这些环境变量。如果您遇到类似的情况,您可能需要调整框架配置以确保它能够识别和使用这些环境变量。例如,如果您使用的是基于 Vite 的框架,您可以扩展配置文件并启用 envPrefix
选项。其他框架可能需要类似的方法。