【问题标题】:How to setup Storybook with Tailwindcss, ReactJS and Typescript如何使用 Tailwindcss、ReactJS 和 Typescript 设置 Storybook
【发布时间】:2023-01-23 06:47:24
【问题描述】:

您如何设置 Storybook 以便它解析 Tailwindcss 样式并解析绝对路径?

注意:根据this,这是允许的自我记录问题/答案。这花了一段时间才弄明白,我相信很多其他人也会遇到这个问题。

【问题讨论】:

    标签: reactjs typescript tailwind-css storybook


    【解决方案1】:

    为了解析 Storybook 中的路径,我们将使用 tsconfig 作为源。 我们假设你已经安装了一个带有 typescript 模板的 ReactJS 项目。

    设置绝对路径

    1.在打字稿中定义绝对路径

    tsconfig.js 中的“路径”下添加您的绝对路径。

    // tsconfig.json
    
    {
      "compilerOptions": {
        // ...
        "baseUrl": "src",
        "paths": {
          "#assets/*": ["./assets/*"],
          "#components/*": ["./components/*"],
          // etc.
        }
      }
      "include": ["src"]
    }
    

    2. 扩展 tsconfig 绝对路径以在 Storybook 中工作

    从 npm 安装 tsconfig-paths-webpack-plugin。在撰写本文时每周有数百万次下载。

    $ npm install -D tsconfig-paths-webpack-plugin
    // or
    $ yarn add -D tsconfig-paths-webpack-plugin
    

    .storybook/main.js 下,通过将以下内容添加到您的 module.exports 来扩展 tsconfig 路径解析。

    // .storybook/main.js
    
    const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
    
    module.exports = {
      // Add the following block of code in addition to what's existing
      "webpackFinal": async (config) => {
        config.resolve.plugins = [
          ...(config.resolve.plugins || []),
          new TsconfigPathsPlugin({
            extensions: config.resolve.extensions,
          }),
        ];
        return config;
      },
    };
    

    Source

    3. 在 Storybook 中解析 Tailwind 样式

    .storybook/preview.js 文件的顶部添加以下两行代码。

    // .storybook/preview.js
    
    import '!style-loader!css-loader!postcss-loader!tailwindcss/tailwind.css';
    import 'tailwindcss/tailwind.css';
    

    Source

    你的 tailwindcss 现在应该解析了。

    附加文件

    对于 Tailwind v3+,请确保您的 tailwind.config.js 没有清除选项并且没有明确声明 JIT。我的看起来像这样:

    // tailwind.config.js
    
    module.exports = {
        content: [
            "./src/**/*.{js,jsx,ts,tsx}"
        ],
        theme: {
            extend: {},
        },
        plugins: [],
    };
    

    【讨论】:

    • 我正在做类似的事情,我有基本的顺风风格,但我在 theme.extends 中设置的配色方案没有加载。你能得到类似的东西吗?例如:extends: { colors: primary: { DEFAULT: '#438D42' } }
    • @kauffee000 不确定你是否完全复制了它,但它应该是 extend:{} no s,而不是 extends:{}
    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 2018-07-14
    • 2019-04-02
    • 2021-07-13
    • 2020-08-30
    • 2018-04-29
    • 2017-03-22
    • 2023-01-24
    相关资源
    最近更新 更多