Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0xtheprodev/storybook-addon-sass-postcss
Storybook AddOn that incorporates PostCSS Preprocessor over CSS Modules with Sass support
https://github.com/0xtheprodev/storybook-addon-sass-postcss
css-modules postcss sass storybook storybook-addon webpack
Last synced: about 1 month ago
JSON representation
Storybook AddOn that incorporates PostCSS Preprocessor over CSS Modules with Sass support
- Host: GitHub
- URL: https://github.com/0xtheprodev/storybook-addon-sass-postcss
- Owner: 0xTheProDev
- License: mit
- Created: 2021-11-15T19:41:33.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-22T12:27:11.000Z (9 months ago)
- Last Synced: 2024-05-01T18:49:10.087Z (7 months ago)
- Topics: css-modules, postcss, sass, storybook, storybook-addon, webpack
- Language: JavaScript
- Homepage: https://storybook.js.org/addons/storybook-addon-sass-postcss
- Size: 563 KB
- Stars: 4
- Watchers: 0
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Storybook Addon Sass PostCSS
[![Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/sponsors/0xTheProDev)
[![Storybook](https://img.shields.io/badge/-Storybook-FF4785?style=for-the-badge&logo=storybook&logoColor=white)](https://storybook.js.org/addons/storybook-addon-sass-postcss)
[![Npm Version](https://img.shields.io/npm/v/storybook-addon-sass-postcss?style=for-the-badge)](https://www.npmjs.com/package/storybook-addon-sass-postcss)
[![Weekly Downloads](https://img.shields.io/npm/dw/storybook-addon-sass-postcss?style=for-the-badge)](https://www.npmjs.com/package/storybook-addon-sass-postcss)
[![Minified Zipped Size](https://img.shields.io/bundlephobia/minzip/storybook-addon-sass-postcss?style=for-the-badge)](https://www.npmjs.com/package/storybook-addon-sass-postcss)
[![License](https://img.shields.io/npm/l/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/LICENSE)
[![Dependencies](https://img.shields.io/librariesio/release/npm/storybook-addon-sass-postcss?style=for-the-badge)](https://www.npmjs.com/package/storybook-addon-sass-postcss)
[![Dependents](https://img.shields.io/librariesio/dependents/npm/storybook-addon-sass-postcss?style=for-the-badge)](https://www.npmjs.com/package/storybook-addon-sass-postcss)
[![Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/npm/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/security)
[![Open Issues](https://img.shields.io/github/issues-raw/0xTheProDev/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/issues)
[![Closed Issues](https://img.shields.io/github/issues-closed-raw/0xTheProDev/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/issues?q=is%3Aissue+is%3Aclosed)
[![Stars](https://img.shields.io/github/stars/0xTheProDev/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/stargazers)
[![Forks](https://img.shields.io/github/forks/0xTheProDev/storybook-addon-sass-postcss?style=for-the-badge)](https://github.com/0xTheProDev/storybook-addon-sass-postcss/network/members)## Description
The Storybook PostCSS addon can be used to run the PostCSS preprocessor with Sass support against your stories in [Storybook](https://storybook.js.org).
> :beginner: **Use of Storybook v8 is strongly suggested with this addon since v0.2; The addon might be compatible with older Storybook versions as well but will no longer be extensively tested against.**
## Getting Started
Install this addon by adding the `storybook-addon-sass-postcss` dependency:
```sh
yarn add -D storybook-addon-sass-postcss
```Then within `.storybook/main.js`:
```js
module.exports = {
addons: ['storybook-addon-sass-postcss'],
};
```And create a PostCSS config in the base of your project, like `postcss.config.js`, that contains:
```js
module.exports = {
// Add your installed PostCSS plugins here:
plugins: [
// require('autoprefixer'),
// require('postcss-color-rebeccapurple'),
],
};
```## PostCSS 8+
If your project requires you to be using PostCSS v8, you can replace the included PostCSS by passing `postcssLoaderOptions` to this addon.
First, you'll need to install PostCSS v8 as a dependency of your project:
```sh
yarn add -D postcss@^8
```Then, you'll need to update your addons config. Within `.storybook/main.js`:
```diff
module.exports = {
addons: [
- 'storybook-addon-sass-postcss',
+ {
+ name: 'storybook-addon-sass-postcss',
+ options: {
+ postcssLoaderOptions: {
+ implementation: require('postcss'),
+ },
+ },
+ },
]
}
```When running Storybook, you'll see the version of PostCSS being used in the logs. For example:
```sh
info => Using PostCSS preset with [email protected]
```## Dart Sass
Similar to above, you can provide reference to your local Sass transpiler to invoke Dart Sass.
First, you'll need to install PostCSS v8 as a dependency of your project:
```sh
yarn add -D sass
```Then, you'll need to update your addons config. Within `.storybook/main.js`:
```diff
module.exports = {
addons: [
- 'storybook-addon-sass-postcss',
+ {
+ name: 'storybook-addon-sass-postcss',
+ options: {
+ sassLoaderOptions: {
+ implementation: require('sass'),
+ },
+ },
+ },
]
}
```## Sass Only
Be default, this plugin will try to transform both CSS and SASS modules. You can change this behaviour by passing _optional_ argument `rule`.
```diff
module.exports = {
addons: [
- 'storybook-addon-sass-postcss',
+ {
+ name: 'storybook-addon-sass-postcss',
+ options: {
+ rule: {
+ test: /\.(scss|sass)$/i,
+ },
+ },
+ },
]
}
```### Using with TailwindCSS
By default, Sass loading is done before PostCSS preprocessing. But this does not work well with TailwindCSS. As it relies on classnames and non-standard behaviours that are only exposed via PostCSS plugin. So to overcome this, Sass must be loaded after preprocessing has been done.
```diff
module.exports = {
addons: [
- 'storybook-addon-sass-postcss',
+ {
+ name: 'storybook-addon-sass-postcss',
+ options: {
+ loadSassAfterPostCSS: true,
+ },
+ },
]
}
```## Loader Options
You can specify loader options for `style-loader`, `css-loader`, `sass-loader` and `postcss-loader` by passing options to this addon as `styleLoaderOptions`, `cssLoaderOptions`, `sassLoaderOptions` or `postcssLoaderOptions` respectively.