Я пробовал использовать его плагин babel, но это не сработало.
Я также использую Craco для расширения / настройки приложения Create React, но я не знаю достаточно Webpack, чтобы заставить Craco работать с Astroturf.





Чтобы заставить астротурф работать, вы должны отправить одно новое правило, сгенерированное правилами веб-пакета Create React App:
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
use: [
{
loader: 'astroturf/loader',
options: { extension: '.module.scss' },
},
],
}
С реагировать-приложение-перепрограммировано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 должно быть аналогично
Примечание:.module.scss следует заменить на .module.css в случае простого css
Я обнаружил, что ответ Антона не работает для моего проекта - загрузчик 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' больше не работает - настраиваемое правило расширения и модуля webpack для astroturf.css работает, чтобы изолировать astroturf от остальной части цепочки сборки.
Вот мои зависимости, на случай, если это изменится для 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",