- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
文件夹结构:
src/index.tsx
src/themes/dark.scss
src/themes/light.scss
...
craco webpack 修改:
const path = require('path');
module.exports = {
webpack: {
configure: (webpackConfig, { env, paths }) => {
webpackConfig.entry.push(
path.join(process.cwd(), "src/themes/dark.scss"),
path.join(process.cwd(), "src/themes/light.scss")
);
webpackConfig.module.rules.splice(1, 0, {
test: /\.themes\/dark.scss$/,
use: [
{ loader: require.resolve('sass-loader') },
{ loader: require.resolve('css-loader') }
]
});
webpackConfig.module.rules[3].oneOf[5].exclude = /\.(module|themes)\.(scss|sass)$/;
webpackConfig.module.rules[3].oneOf[6].exclude = /\.themes\.(scss|sass)$/;
webpackConfig.module.rules[3].oneOf[7].exclude.push(/\.themes\.(scss|sass)$/);
return webpackConfig;
}
}
};
我希望这样做的目的很明显——我们正在尝试从 src/themes
生成两个主题 css 文件目录,稍后将通过卸载/加载手动更改 <link
直接在 DOM 中,我的灵感来自 Output 2 (or more) .css files with mini-css-extract-plugin in webpack和 https://github.com/terence55/themes-switch/blob/master/src/index.js .
现在麻烦来了 - 在构建过程之后:
Creating an optimized production build...
Compiled successfully.
File sizes after gzip:
122.24 KB build/static/css/2.2e93dcba.chunk.css
762 B build/static/js/runtime~main.a8a9905a.js
191 B build/static/css/main.d0c4fa77.chunk.css
157 B build/static/js/main.2063d3e0.chunk.js
109 B build/static/js/2.9b95e8c0.chunk.js
(CSS文件还行,通用的CSS文件很少,很少有来自库的)。但是没有 theme
文件...我尝试结合 file-loader
, 但它也不起作用。
最佳答案
我建议配置 webpack 将与特定主题相关的所有 Assets 打包到一个 block 中:
const themeFileRegex = /(\w+)\.theme\.(scss|sass)$/;
// recursively searches for a theme stylesheet in parent issuers
function getIssuerTheme(module) {
const matches = themeFileRegex.exec(module.resource);
if (matches) {
return matches[1];
} else {
return module.issuer && getIssuerTheme(module.issuer);
}
}
...
webpackConfig.optimization.splitChunks.cacheGroups = {
...webpackConfig.optimization.splitChunks.cacheGroups,
themes: {
test: getIssuerTheme,
name: m => {
const name = getIssuerTheme(m);
return `theme.${name}`;
},
reuseExistingChunk: false,
},
};
这样,您应该得到名为 theme.light
、theme.dark
等的 block
关于css - CRA + Craco + 多个 CSS 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569115/
npm ERR! While resolving: frontend@0.1.0 npm ERR! Found: react-scripts@5.0.0 npm ERR! node_modules/r
我正在尝试添加 this插件,它使用 this webpack plugin到我的 craco 配置文件,按照指南进行操作,但它不起作用。 const CracoAlias = require('cr
我正在尝试将 Craco 与 Ant-Design 一起使用,但我无法制作合适的主题切换器。有没有更简单的方法来为此实现主题切换器? const CracoLessPlugin = require("
我的项目使用 craco 来启动/构建,我希望集成 tailwind postcss。我已遵循本教程 https://dev.to/ryandunn/how-to-use-tailwind-with-
我正在构建由 create-react-app 提供的 React 应用程序。 我使用 craco 来简化配置,并为 TypeScript 和 Webpack 设置了 alise。 但是当我运行测试命
我必须能够在运行时更改 ant 设计变量(而不是通过无主题文件)。 我用 找到了很多这样的例子定制-cra 和 react-app-rewire-less ,但似乎没有一个适用于 craco。我必须使
文件夹结构: src/index.tsx src/themes/dark.scss src/themes/light.scss ... craco webpack 修改: const path = r
当我将 tailwindcss 更新到版本 3 时,当我意识到老师正在创建和设置他们自己的 craco 时,我正在按照一个关于在框架(如 react)上使用 tailwindcss 的旧教程.conf
编辑:为了遵守 Stackoverflow 指南并让我们所有人的事情变得简单,我提交了一个可重现的小示例来重现我的错误: https://github.com/shackra/stackoverflo
编辑:为了遵守 Stackoverflow 指南并让我们所有人的事情变得简单,我提交了一个可重现的小示例来重现我的错误: https://github.com/shackra/stackoverflo
我正在使用 create react app with craco 和 craco-cesium 将铯加载到我的项目中。我正在尝试设置 jest 以开始创建测试,但问题是 Cesium 正在使用 re
我想用svgr's webpack plugin使用 create-react-app 到 use SVGs with MaterialUI's SvgIcon.我正在使用 craco将 svgr 添
概括 在创建一个新项目并尝试使用 craco 时,我遇到了一个我不明白的错误。 我有什么 错误看起来像这样...... $ craco start (node:125281) UnhandledPro
Storybook 当前调用 react-scripts 。但是,我已经用 craco 覆盖了 CRA 配置的某些部分。这意味着我的应用程序是使用 craco ... 而不是 react-script
我得到了一个 React 项目,我需要使用 Docker Compose 进行容器化。我有一个 Dockerfile: FROM node:latest # Create app directory
我想用ts-nameof在我用 create-react-app 创建的 React 应用程序中.我怎么能在不弹出的情况下做到这一点? 提示:我也用 craco ,所以涉及 craco 的解决方案对我
我在使用 create-react-app 和 craco 设置 webpack 别名路径时遇到问题,已经在谷歌上搜索,但无法解决问题。 我收到一个错误 Module not found: Can't
我试图在运行时通过 require.context 做一些要求在我的 CRA(使用 Typescript)项目中,但我只收到这些类型的错误: TypeError: __webpack_require_
我正在将 ANTd 与我为学校项目构建的 React 应用程序一起使用。该应用程序运行良好,但是在启动时我得到以下信息:craco: *** Cannot find ESLint loader (es
我是一名优秀的程序员,十分优秀!