用于针对您的故事运行带有 Sass 支持的 PostCSS 预处理器的 Storybook 插件。

在 Github 上查看

Storybook 插件 Sass PostCSS

Sponsor Storybook Npm Version Weekly Downloads Minified Zipped Size License Dependencies Dependents Vulnerabilities Open Issues Closed Issues Stars Forks

描述

Storybook PostCSS 插件可用于在 Storybook 中针对您的故事运行带有 Sass 支持的 PostCSS 预处理器。

:beginner: 强烈建议此插件配合 Storybook v8 使用(从 v0.2 版本开始);该插件可能也与较旧的 Storybook 版本兼容,但将不再对其进行广泛测试。

入门

通过添加 storybook-addon-sass-postcss 依赖项来安装此插件

yarn add -D storybook-addon-sass-postcss

然后在 .storybook/main.js

module.exports = {
  addons: ['storybook-addon-sass-postcss'],
};

并在项目根目录下创建一个 PostCSS 配置文件,例如 postcss.config.js,其中包含

module.exports = {
  // Add your installed PostCSS plugins here:
  plugins: [
    // require('autoprefixer'),
    // require('postcss-color-rebeccapurple'),
  ],
};

PostCSS 8+

如果您的项目需要使用 PostCSS v8,您可以通过将 postcssLoaderOptions 传递给此插件来替换包含的 PostCSS。

首先,您需要将 PostCSS v8 作为项目依赖项安装

yarn add -D postcss@^8

然后,您需要更新插件配置。在 .storybook/main.js

module.exports = {
  addons: [
-   'storybook-addon-sass-postcss',
+   {
+     name: 'storybook-addon-sass-postcss',
+     options: {
+       postcssLoaderOptions: {
+         implementation: require('postcss'),
+       },
+     },
+   },
  ]
}

运行 Storybook 时,您将在日志中看到正在使用的 PostCSS 版本。例如

info => Using PostCSS preset with [email protected]

Dart Sass

类似于上面,您可以提供对本地 Sass 编译器的引用以调用 Dart Sass。

首先,您需要将 PostCSS v8 作为项目依赖项安装

yarn add -D sass

然后,您需要更新插件配置。在 .storybook/main.js

module.exports = {
  addons: [
-   'storybook-addon-sass-postcss',
+   {
+     name: 'storybook-addon-sass-postcss',
+     options: {
+       sassLoaderOptions: {
+         implementation: require('sass'),
+       },
+     },
+   },
  ]
}

仅 Sass

默认情况下,此插件将尝试转换 CSS 和 SASS 模块。您可以通过传递可选参数 rule 来更改此行为。

module.exports = {
  addons: [
-   'storybook-addon-sass-postcss',
+   {
+     name: 'storybook-addon-sass-postcss',
+     options: {
+       rule: {
+         test: /\.(scss|sass)$/i,
+       },
+     },
+   },
  ]
}

与 TailwindCSS 一起使用

默认情况下,Sass 加载在 PostCSS 预处理之前完成。但这与 TailwindCSS 不太兼容。因为它依赖于类名和仅通过 PostCSS 插件公开的非标准行为。因此,为了克服这个问题,必须在预处理完成后加载 Sass。

module.exports = {
  addons: [
-   'storybook-addon-sass-postcss',
+   {
+     name: 'storybook-addon-sass-postcss',
+     options: {
+       loadSassAfterPostCSS: true,
+     },
+   },
  ]
}

加载程序选项

您可以通过将选项分别传递给此插件作为 styleLoaderOptionscssLoaderOptionssassLoaderOptionspostcssLoaderOptions 来指定 style-loadercss-loadersass-loaderpostcss-loader 的加载程序选项。