我正在尝试用tailwind css构建我的故事书。当运行build-storybook
时,组件是用tailwind类呈现的。不幸的是,当我构建故事书并用npx http-server storybook-static
运行create build storybook-static
时,类没有加载到故事中,组件也没有显示样式。
这是我的项目的一个副本:https://gitlab.com/ens.evelyn.development/storybook-issue
这是我的main.js
:
const path = require('path')
module.exports = {
"stories": [
"../src/components/**/**/*.stories.mdx",
"../src/components/**/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials",
{
name: '@storybook/addon-postcss',
options: {
postcssLoaderOptions: {
implementation: require('postcss'),
},
},
},
"@storybook/addon-actions",
"storybook-tailwind-dark-mode"
]}
我的项目结构如下所示:
.storybook
src
components
subdir
Button
index.tsx
button.stories.js
styles
index.css (<-- tailwindcss file)
任何提示或建议都非常感谢。
9条答案
按热度按时间elcex8rz1#
更新:我最初的答案可能对其他人有用,所以我将它留作参考。然而,在本例中,问题出在tailwind.config.js中。
变更
到
原件:
我刚刚测试了一下,Storybook的构建符合我的预期。我认为我们配置中的关键区别在于我没有在main.js中更改Storybook的webpack配置,而是使用@storybook/addon-postcss作为postcss@^8(tailwind@^2需要):
我在postcss.config.js中指定了必要的插件(在我的项目根目录中):
同样值得注意的是,我直接在Storybook的preview.js中导入Tailwind,而不是通过我自己的css文件:
希望这些改变能让Tailwind为您工作。
为了进行比较(参见下面的注解),下面是我的build storybook-static目录的内容:
7cwmlq892#
由于JIT编译器的原因,以上解决方案不适用于Tailwind版本〉3.0。
在
.storybook/preview.js
文件中,添加此行以编译tailwind生成的css文件,如下所示-这里
tailwindcss/tailwind.css
是tailwind css文件,看,重要的是我必须添加!postcss-loader!
来编译tailwind生成的css。您也可以添加您的自定义scss文件,如有-
这里
../src/scss/style.scss
是自定义scss文件。对于大多数人来说,这将在Tailwind版本〉3.0中工作,没有任何问题。
在预览页中创建自定义样式元素
希望,这将有助于新的Tailwind用户谁是工作在Tailwind大于
v3.0
。rbpvctlc3#
我也遇到过类似的问题。我的问题是通过添加以下内容来解决的:
import "../src/index.css";
到.故事书/预览. jsycl3bljg4#
下面的配置将使Tailwind生成CSS,因为新的tailwind类被添加到开发模式下的标记中(热重载)。
总之,我不认为@storybook/addon-postcss可以与Tailwind JIT和Storybook热重载一起工作,解决方法是使用
postcss-loader
webpack加载器。安装这些deps:
@storybook/builder-webpack5
@storybook/manager-webpack5
postcss-loader
webpack
(必须是版本5)d4so4syb5#
如果你使用故事书与TSdx和tailwind css,你应该能够导入一个CSS到组件
1.为了能够将你的CSS导入到组件中,你需要告诉TSDX如何将它包含在你的代码中。为此,你需要安装rollup-plugin-postcss(因为TSDX使用rollup)。
1.在src目录中创建一个CSS文件,我们将在任何想要使用Tailwind的组件中使用该文件。
好了,现在让我们添加rollup-plugin-postcss:
TSDX是fully customizable,您可以添加任何汇总插件,但要注意它会覆盖默认行为
现在,您将创建一个
tsdx.config.js
这是一个postCSS路径,告诉它你想要它运行在什么文件上。minimize键是允许你最小化输出。这里最重要的键是“inject”。你把它设置为“top”来告诉postCSS在我们页面的什么地方将插入CSS。这对Tailwind来说是至关重要的,因为它需要有任何其他样式表的最高优先级。
接下来,在第2部分中,您将在src目录下创建一个tailwind.css(可以命名为其他任何名称)文件,并将其粘贴到:
将CSS import语句添加到组件中
8nuwlpux6#
对于那些仍然有这个问题并且使用postcss〉= 8的用户,我建议您按照以下步骤操作:将此添加到tailwind.config.js
将此添加到preview.js
这已经帮助我解决了这个问题,我希望它也能帮助你
relj7zay7#
我不能解决这个问题,上面的答案对我不起作用,所以我最终只是设置我的build-storybook脚本在build.package.json脚本之后运行tailwind本身,最后看起来像这样:
有点乱,但是这里的
$(npm bin -g)/
使用了我全局安装的(npm i -g tailwindcss
)版本的tailwindcss,因为安装到项目中的版本对我来说在构建中不起作用。-i和-o指定输入和输出文件,-m缩小输出。
我可以预见,如果构建了不止一个CSS文件,这会导致问题(也许使用
storybook-static/static/css/**/*.css
可以代替?),但这可能会帮助一些人得到一些工作。uxh89sit8#
当你尝试使用Tailwind CSS创建故事书时,你会注意到CSS没有被应用。有一个简单的解决方案帮助了我。
你的
preview.js
应该是这样的。您需要在
preview.js
中添加以下行来修复它。//添加下面的导入行
然而,这将是一个临时修复。要完全解决这个问题,您需要添加下面提到的包。
如需参考,请单击此处How to add postcss
avwztpqn9#
上面提到的解决方案起作用了,但只是部分。我面临着两个问题:
1.如果我向story添加新的类,那么tailwind不会添加与类相关的相应样式。
1.热再装填不起作用。