You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:使用craco时,是否会覆盖现有配置或仅追加选项?

CRAco 配置是覆盖还是追加?

CRAco 对配置的处理不是一刀切的“覆盖”或“追加”,而是根据配置项的类型采用对应的合并策略,绝大多数场景下会将自定义配置与 CRA(Create React App)的原有配置合并,而非直接替换。

具体规则说明:

  • Babel 配置

    • 对于 presets、plugins 这类数组型配置,CRAco 默认会把你自定义的内容追加到原有数组的末尾,不会替换 CRA 自带的预设/插件。比如你提供的示例中,@emotion/babel-preset-css-prop 会被加到 CRA 默认的 Babel presets 后面,@babel/preset-react、@babel/preset-env 这些原有预设依然生效。
    • 若要完全覆盖原有配置,可以在对应配置项中添加 override: true,比如:
      babel: {
        override: true,
        presets: ["@emotion/babel-preset-css-prop"]
      }
      
      这种方式会彻底替换 CRA 的默认 Babel 配置,一般仅在需要完全重构 Babel 规则时使用。
  • Webpack、ESLint 等其他配置

    • 对象型配置(比如 webpack 的 resolve.alias)会进行深度合并:自定义的键值对会补充到原有配置中,若键名重复,自定义值会覆盖原有值。
    • 数组型配置(比如 webpack 的 plugins)默认同样是追加逻辑,若需替换可通过 override 选项或自定义合并函数实现。

你的示例代码解析:

// craco.config.ts
module.exports = {
    babel: {
      presets: ["@emotion/babel-preset-css-prop"]
    },
};

这个配置会将 @emotion/babel-preset-css-prop 追加到 CRA 默认的 Babel presets 列表末尾,不会覆盖原有预设,Emotion 的 CSS-in-JS 特性可以和 CRA 原有编译规则共存。

内容的提问来源于stack exchange,提问作者captdelvfu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:15:49