@storybook/addon-styling-webpack
使用流行的样式工具更快地在 Storybook 7 中入门。
✨ 特性
- 🤖 通过代码修改器为流行工具提供零配置。
- 🧩 流行工具的配置模板
- ⚡️ CSS 模块、PostCSS、Sass、Less 和 Vanilla-extract 的选项
🏁 入门
🤖 自动配置
要开始使用,请使用 Storybook CLI **安装软件包**
pnpm
pnpm dlx storybook@latest add @storybook/addon-styling-webpack
yarn
yarn dlx storybook@latest add @storybook/addon-styling-webpack
npm
npx storybook@latest add @storybook/addon-styling-webpack
**这做了什么?**在幕后,这会在您的项目中安装软件包并将插件添加到您的main.js
文件中。之后,它将运行npx @storybook/auto-config styling
。这是一个代码修改器包,它将尝试检测您项目中的样式工具并相应地配置您的 Storybook。
如果代码修改器失败,请尝试手动运行npx @storybook/auto-config styling
。如果仍然失败,请在 auto-config 仓库中提交问题。
🛠️ 手动配置
@storybook/addon-styling-webpack
获取样式工具的 Webpack 模块规则,并替换 Storybook 的 Webpack 配置中的现有规则。这避免了重复会导致 Storybook 构建中断的规则。
{
name: '@storybook/addon-styling-webpack',
options: {
rules: [
// Replaces existing CSS rules with given rule
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
],
}
]
}
}
它还可以获取要添加到 Storybook 配置中的 Webpack 插件。
{
name: '@storybook/addon-styling-webpack',
options: {
plugins: [
new MiniCssExtractPlugin(),
]
}
}
🧩 常用配置
以下是几个常用的样式工具配置,帮助您入门。通过组合以下不同规则,可以实现更复杂的配置。
PostCSS
// Often used for tailwind
{
name: '@storybook/addon-styling-webpack',
options: {
rules: [
// Replaces existing CSS rules to support PostCSS
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: { importLoaders: 1 }
},
{
// Gets options from `postcss.config.js` in your project root
loader: 'postcss-loader',
options: { implementation: require.resolve('postcss') }
}
],
}
]
}
}
您还可以查看这个示例项目,它使用 PostCSS 为 **Tailwind** 和 Storybook。
CSS 模块
{
name: '@storybook/addon-styling-webpack',
options: {
rules: [
// Replaces existing CSS rules to support CSS Modules
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: {
auto: true,
localIdentName: '[name]__[local]--[hash:base64:5]',
},
},
}
],
}
]
}
}
Sass
{
name: '@storybook/addon-styling-webpack',
options: {
rules: [
// Replaces any existing Sass rules with given rules
{
test: /\.s[ac]ss$/i,
use: [
"style-loader",
"css-loader",
{
loader: "sass-loader",
options: { implementation: require.resolve("sass") }
},
],
},
]
}
}
Less
{
name: '@storybook/addon-styling-webpack',
options: {
rules: [
// Replaces any existing Sass rules with given rules
{
test: /\.less$/i,
use: [
"style-loader",
"css-loader",
{
loader: "less-loader",
options: { implementation: require.resolve("less") }
},
],
},
]
}
}
Vanilla-extract
{
name: '@storybook/addon-styling-webpack',
options: {
plugins: [
new VanillaExtractPlugin(),
new MiniCssExtractPlugin(),
],
rules: [
{
test: /\.css$/,
sideEffects: true,
use: [
require.resolve("style-loader"),
{
loader: require.resolve("css-loader"),
options: {},
},
],
exclude: /\.vanilla\.css$/,
},
{
// Targets only CSS files generated by vanilla-extract
test: /\.vanilla\.css$/i,
sideEffects: true,
use: [
MiniCssExtractPlugin.loader,
{
loader: require.resolve('css-loader'),
options: {
// Required as image imports should be handled via JS/TS import statements
url: false,
},
},
],
},
]
}
}
故障排除
单仓是更高级的设置,可能需要更多配置。要了解更多信息,请参阅 Storybook 常见问题解答中关于单仓的内容。
🤝 贡献
如果您想为这个插件做出贡献,**非常感谢**,我非常乐意得到您的帮助 🙏
📝 开发脚本
pnpm build
构建并打包您的插件代码
🌲 分支结构
- **next** - npm 上的
next
版本,以及大多数工作发生的主要开发分支 - **main** - npm 上的
latest
版本,以及大多数用户使用的稳定版本
🚀 发布流程
- 所有 PR 应该针对
next
分支,该分支依赖于 Storybook 的next
版本。 - 合并后,将在
next
NPM 标签上发布此软件包的新版本。 - 如果更改包含需要修补回稳定版本的错误修复,请在 PR 说明中注明。
- 标记为
pick
的 PR 将被 cherry-pick 回main
分支,并在latest
npm 标签上生成发布。