next.js Tailwindcss @apply在Storybook中不起作用

368yc8dk  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(157)

我正在使用Next CSS模块(Sass)。我尝试了我遇到的每一个解决方案,但我仍然无法让它工作。
我的问题是,当我运行故事书时,css无法从tailwind编译@apply方法。有一个简单的解决方案是删除@apply并直接使用元素的类名,但我没有时间这样做,因为应用程序太大了。

// main.js
const path = require('path');

module.exports = {
  stories: [
    '../stories/**/*.stories.mdx',
    '../stories/**/*.stories.@(js|jsx|ts|tsx)',
  ],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@storybook/addon-interactions',
    {
      name: '@storybook/addon-postcss',
      options: {
        postcssLoaderOptions: {
          postcssOptions: {
            plugins: [require.resolve('tailwindcss')],
          },
          implementation: require('postcss'),
        },
      },
    },
  ],
  framework: '@storybook/react',
  webpackFinal: async (config) => {
    config.module.rules.push({
      test: /\.sass$/,
      use: ['style-loader', 'css-loader?modules&importLoaders', 'sass-loader'],
      include: path.resolve(__dirname, '../'),
    });

    return config;
  },
};

字符串
故事书输出
x1c 0d1x的数据
如果你能帮忙的话

ej83mcc0

ej83mcc01#

我设法使它的工作通过使用此配置。
.storybook/main.js

const path = require('path');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

module.exports = {
  stories: [
    '../stories/**/*.stories.mdx',
    '../stories/**/*.stories.@(js|jsx|ts|tsx)',
  ],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@storybook/addon-interactions',
    'storybook-addon-next-router',
    {
      name: '@storybook/addon-postcss',
      options: {
        postcssLoaderOptions: {
          postcssOptions: {
            plugins: [require.resolve('tailwindcss')],
          },
          implementation: require('postcss'),
        },
      },
    },
  ],
  framework: '@storybook/react',
  webpackFinal: async (config) => {
    config.resolve.plugins.push(new TsconfigPathsPlugin());

    config.module.rules.push({
      test: /\.sass$/,
      use: ['style-loader', 'css-loader?modules&importLoaders', 'sass-loader'],
      include: path.resolve(__dirname, '../'),
    });

    return config;
  },
};

字符串
.storybook/preview.js

import '../styles/globals.css';
import { RouterContext } from 'next/dist/shared/lib/router-context';

export const parameters = {
  actions: { argTypesRegex: '^on[A-Z].*' },
  controls: {
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
  nextRouter: {
    Provider: RouterContext.Provider,
  },
};


在global.css中,我导入了tailwind实用程序
global.css

@tailwind base;
@tailwind components;
@tailwind utilities;

lzfw57am

lzfw57am2#

当我尝试@hdotluna的解决方案时,它似乎对我的新故事书7不起作用。然而,后来我从故事书回购的评论中找到了类似问题的解决方案。
在故事书main.js文件中,将postcss-loader添加到webpack配置中似乎已经完成了任务。
以下是我如何更新我的配置-

const path = require('path');
module.exports = {
  "stories": ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
  "addons": [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-styling",  
  ],
  "framework": {
    name: "@storybook/react-webpack5",
    options: {}
  },
  "webpackFinal": async (config, {
    configType
  }) => {
    config.module.rules.push({
      test: /\.scss$/,
      use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'], // note the 'postcss-loader' added
      include: path.resolve(__dirname, '../src/')
    });
    return config;
  }
};

字符串
postcss.config.js(也需要)

module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};


style.scss(我的自定义css文件)

@tailwind base;
@tailwind components;
@tailwind utilities;

.editor-container ol {
    @apply list-decimal;
}
.editor-container ul {
    @apply list-disc;
}


我通过将scss文件导入到故事书preview.js文件来使用它。

相关问题