5 sass css-modules next.js storybook
使用 Nextjs 和 Storybook 开发一个新项目。我们使用 SCSS 模块来设计组件的样式,它们在浏览器上的实际应用程序中工作得很好,但它们不会在故事本身中链接起来。这里有一些简单的片段来显示我现在所处的位置:
成分:
import React from 'react'
import styles from './VideoEntryTile.module.scss'
const VideoEntryTile: React.FC = () => {
return (
// This displays properly in the browser but not storybook
<div className={styles.container}>
<p>Hello</p>
</div>
)
}
export default VideoEntryTile
Run Code Online (Sandbox Code Playgroud)
SCSS模块:
.container {
background-color: blueviolet;
}
Run Code Online (Sandbox Code Playgroud)
组件故事:
import React from 'react';
import { ComponentStory, ComponentMeta } from '@storybook/react';
import VideoEntryTile from './VideoEntryTile';
export default {
title: 'Video Entry Tile',
component: VideoEntryTile,
argTypes: {
},
} as ComponentMeta<typeof VideoEntryTile>;
const Template: ComponentStory<typeof VideoEntryTile> = (args) => <VideoEntryTile {...args} />;
export const Primary = Template.bind({});
Primary.args = {};
Run Code Online (Sandbox Code Playgroud)
./storybook/main.js:
import React from 'react'
import styles from './VideoEntryTile.module.scss'
const VideoEntryTile: React.FC = () => {
return (
// This displays properly in the browser but not storybook
<div className={styles.container}>
<p>Hello</p>
</div>
)
}
export default VideoEntryTile
Run Code Online (Sandbox Code Playgroud)
谁能告诉我哪里错了?谢谢。
Bre*_*dan -1
scss-preset.js创建一个名为的文件.storybook:
// Copied from https://github.com/storybookjs/presets/blob/master/packages/preset-scss/index.js
function wrapLoader(loader, options) {
if (options === false) {
return [];
}
return [
{
loader,
options,
},
];
}
function webpack(webpackConfig = {}, options = {}) {
const { module = {} } = webpackConfig;
const {
styleLoaderOptions,
cssLoaderOptions,
sassLoaderOptions,
rule = {},
} = options;
return {
...webpackConfig,
module: {
...module,
rules: [
...(module.rules || []),
{
test: /(?<!module)\.s[ca]ss$/,
...rule,
use: [
...wrapLoader('style-loader', styleLoaderOptions),
...wrapLoader('css-loader', {
...cssLoaderOptions,
modules: false,
}),
...wrapLoader('sass-loader', sassLoaderOptions),
],
},
{
test: /\.module\.s[ca]ss$/,
...rule,
use: [
...wrapLoader('style-loader', styleLoaderOptions),
...wrapLoader('css-loader', {
...cssLoaderOptions,
modules: true,
}),
...wrapLoader('sass-loader', sassLoaderOptions),
],
},
],
},
};
}
module.exports = { webpack };
Run Code Online (Sandbox Code Playgroud)
这将遍历每个 scss 文件,如果它是 module.scss 文件,则以与非文件不同的方式处理它。
在 main.js 中,添加presets: [path.resolve("./.storybook/scss-preset.js")],到module.exports. 应该是你所需要的。
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |