Sal*_*dog 7 webpack css-modules react-css-modules storybook
我正在尝试在我的项目中使用 Storybook v5.0,并且我正在使用 React + Webpack4 + CSS 模块。(我没有使用 CreateReactApp)
我的设置非常简单,并且我能够在没有 CSS 模块的情况下很好地设置 Storybook。
但是,如果我尝试编辑自定义故事书 webpack 配置以支持 CSS 模块,则会出错。
当我运行时,npm run storybook我得到的错误是:
ERROR in ./src/components/Test/index.css (./node_modules/css-loader/dist/cjs.js??ref--6-1!./node_modules/postcss-loader/src??postcss!./node_modules/style-loader!./node_modules/css-loader/dist/cjs.js??ref--9-1!./node_modules/postcss-loader/src!./src/components/Test/index.css)
Module build failed (from ./node_modules/postcss-loader/src/index.js):
SyntaxError
(2:1) Unknown word
1 |
> 2 | var content = require("!!../../../node_modules/css-loader/dist/cjs.js??ref--9-1!../../../node_modules/postcss-loader/src/index.js!./index.css");
| ^
3 |
4 | if(typeof content === 'string') content = [[module.id, content, '']];
Run Code Online (Sandbox Code Playgroud)
在我的package.json:
"@storybook/addon-actions": "^5.0.0",
"@storybook/addons": "^5.0.0",
"@storybook/react": "^5.0.0",
Run Code Online (Sandbox Code Playgroud)
我.storybook/webpack.config.js遵循他们网站上的示例,如下所示:
const path = require("path");
const stylesLoaders = [
"style-loader",
{
loader: "css-loader",
options: {
modules: true,
localIdentName: "[path]__[local]--[hash:base64:5]"
}
},
"postcss-loader"
];
module.exports = {
module: {
rules: [
{
test: /\.css$/,
loaders: stylesLoaders,
include: path.resolve(__dirname, "../")
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,因为我想使用最新版本的 Storybook!
这对我有用:
// ./.storybook/main.js
module.exports = {
//
webpackFinal: (config, {configType}) => {
const path = require('path');
config.module.rules.push({
test: /\.css$/,
use: ['style-loader', 'css-loader?modules=true'],
include: path.resolve(__dirname, '../'),
});
return config;
}
//
}
Run Code Online (Sandbox Code Playgroud)
CSS文件从重命名<filename>.css为<filename>.module.css.祝你好运...
我对新故事书(v5)也有同样的问题。最后,在我必须在 .storybook/webpack.config.js 中传播 config 和 config.module 后,我让它工作了
根据 Storybook 的文档,我使用了 webpack 的函数而不是对象: https ://storybook.js.org/docs/configurations/custom-webpack-config/
这是一个例子:
module.exports = ({ config }) => ({
...config,
module: {
...config.module,
rules: [
{
test: /\.(ts|tsx)$/,
exclude: /node_modules/,
use:[
{
loader: require.resolve("babel-loader"),
options: {
presets: [["react-app", { flow: false, typescript: true }]]
}
}
],
include: path.resolve(__dirname, "../")
},
{
test: /\.css$/,
use: [
{
loader: "style-loader",
options: { sourceMap: true }
},
{
loader: "css-loader",
options: {
importLoaders: 1,
modules: true,
localIdentName: "[name]__[local]__[hash:base64:5]"
}
},
{
loader: require.resolve("postcss-loader"),
options: {
ident: "postcss",
plugins: () => [
require("postcss-flexbugs-fixes"),
require("postcss-inline-svg"),
require("postcss-svgo"),
autoprefixer({
browsers: [
">1%",
"last 4 versions",
"Firefox ESR",
"not ie < 9"
],
flexbox: "no-2009"
})
]
}
}
],
include: path.resolve(__dirname, "../")
}
]
}
});
Run Code Online (Sandbox Code Playgroud)
我希望它能帮助你:)
| 归档时间: |
|
| 查看次数: |
12701 次 |
| 最近记录: |