出于测试/学习的目的,我使用的是弹出版本create-react-app 3.4.1
附带css-loader 3.4.2
,我正在尝试重现这些结果 https://github.com/webpack-contrib/css-loader#namedexport其中 css 选择器以短横线大小写编写,但 js 样式对象将它们转换为驼峰命名法:
样式.css
.foo-baz {
color: red;
}
.bar {
color: blue;
}
index.js
import styles from './styles.css';
console.log(styles);
// expected result: { fooBaz, bar }
// actual, default results: { foo-baz, bar }
根据 css-loader变更日志 https://openbase.io/js/css-loader/versions#3.0.0在 3.0.0 版本中:
exportLocalsStyle
选项已被删除,有利于localsConvention
选项,也是只接受{String}
值(使用'camelCase'
如果您之前的值是true
and 'asIs'
如果您之前的值是false
)
所以我尝试这样做:
webpack.config.js
...
{
test: cssRegex,
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
sourceMap: isEnvProduction && shouldUseSourceMap,
localsConvention: "camelCase", // my only addition is this line
}),
sideEffects: true,
},
...
Running npm start
and npm run build
两者都成功工作,但是转换没有发生,并且我仍然在 js 文件中使用 kebab-case,即使添加console.log(styles)
在我的 App.js 文件中,打印到控制台的输出对象仍然是 kebab-case 键和后续的 kebab-case 值。
我在这里错过了什么吗?也许我很可能对前/后CSS编译过程没有清楚的了解,并且我试图将这个逻辑注入到错误的地方?有没有人有一个使用此 kebab 到 CamelCase 功能的工作示例css-loader 3.*
?
旁注:我不想更新css-loader
包到它的最新版本,我打算将此信息带回到非弹出的create-react-app
然后更新配置craco
- 我需要改变的越少越好。