我尝试使用它的 babel 插件,但是没有用。
我也在使用 craco 来扩展/自定义 Create React App,但我不知道足够的 Webpack 来让 craco 与 Astroturf 一起工作。
我尝试使用它的 babel 插件,但是没有用。
我也在使用 craco 来扩展/自定义 Create React App,但我不知道足够的 Webpack 来让 craco 与 Astroturf 一起工作。
要使astroturfCreate React App
正常工作,您应该推送一个由webpack 规则生成的新规则:
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
use: [
{
loader: 'astroturf/loader',
options: { extension: '.module.scss' },
},
],
}
使用react-app-rewired,config-overrides.js
将如下所示:
module.exports = (config) => {
config.module.rules.push({
test: /\.(js|mjs|jsx|ts|tsx)$/,
use: [
{
loader: 'astroturf/loader',
options: { extension: '.module.scss' },
},
],
});
return config;
};
应该craco
是类似的
注意: 如果是纯 CSS,.module.scss
应替换为.module.css
我发现 Anton 的回答对我的项目不起作用 - astroturf 加载程序覆盖了 CRA 的内置加载程序。我已经成功了config-overrides.js
:
const { override, getBabelLoader, addWebpackModuleRule } = require("customize-cra");
const addAstroturf = plugin => config => {
const babel = getBabelLoader(config);
babel.loader = [
{ loader: babel.loader, options: babel.options },
{ loader: 'astroturf/loader', options: { extension: '.astroturf.css' } }
];
babel.options = undefined;
return config;
};
module.exports = override(
addWebpackModuleRule({
test: /\.astroturf\.css$/,
use: ['style-loader', 'astroturf/css-loader'],
}),
addAstroturf()
);
该addAstroturf
函数是一个自定义 CRA 覆盖,它使用 astroturf 扩展加载程序,而不是覆盖。此外,我发现使用 astroturf 意味着import './Foo.css'
不再起作用 - 用于astroturf.css
将 astroturf 与构建链的其余部分隔离的自定义扩展和 webpack 模块规则。
这是我的依赖项,以防将来 CRA 发生变化:
"create-react-app": "^4.0.0",
"astroturf": "^0.10.5",
"customize-cra": "^1.0.0",
"react": "^17.0.1",
"react-app-rewired": "^2.1.6",