使用 webpack modifyVars 覆盖 create-react-app 中的 ant design default.less 变量,使用 rewired 的 react app

Posted

技术标签:

【中文标题】使用 webpack modifyVars 覆盖 create-react-app 中的 ant design default.less 变量,使用 rewired 的 react app【英文标题】:Use webpack modifyVars to override ant design default.less variables in create-react-app using react app rewired 【发布时间】:2019-06-16 04:26:03 【问题描述】:

我想修改已使用 create-react-app 设置的应用程序中的 ant design default.less 变量。我没有弹出,而是使用 react-app-rewired 来修改注入自定义 webpack 配置。我可以通过遵循link 来覆盖大部分变量。我有以下目录结构:

--App
  |--config-overrides.js
  |--src
     |--styles
        |--styles.css
        |--(maybe include a .less file to achieve the purpose)

config-overrides.js

  const  injectBabelPlugin  = require('react-app-rewired');                  
  const  compose  = require('react-app-rewired');                            
  const rewireLess = require('react-app-rewire-less');                              

  module.exports = function override(config, env)                             
    config = injectBabelPlugin(
      ['import',  libraryName: 'antd', libraryDirectory: 'es', style: true ],                                              
      config,                                                                  
    );
    config = rewireLess.withLoaderOptions(
      modifyVars: 
        '@ant-prefix' : 'ant',

        '@primary-color': '#006778', //works

        '@text-color': '#505050', //works

        //Not able to inject styles this way.     
        "@ant-prefix-divider-vertical  height: unset; " //doesn't work                             
      ,
      javascriptEnabled: true,                                                 
    )(config, env);

当我在modifyVars 对象中添加最后一行时,应用程序不会从上面开始。我希望能够像这样覆盖 antd 类。

例如:

.@ant-prefix-btn-primary 
    &:hover,
    &:focus 
        background: @primary-color;
        color: #fff;
    

【问题讨论】:

【参考方案1】:

modifyVars 仅用于执行此操作。修改变量。更具体地说,default.less 中的变量。

你不能用它来注入这样的 CSS。您必须在自己的.css(或.less)文件中执行此操作,然后使用普通的import 命令将其导入应用程序。 (Import CSS in a react app)

【讨论】:

以上是关于使用 webpack modifyVars 覆盖 create-react-app 中的 ant design default.less 变量,使用 rewired 的 react app的主要内容,如果未能解决你的问题,请参考以下文章

less.modifyVars的用法

Karma,覆盖率报告结合 webpack

使用 Istanbul + Webpack 覆盖 JSX 文件的代码

使用 Webpack 的 Karma:伊斯坦布尔覆盖率为 100%(0/0)

如何通过 Angular、Karma 和 Webpack 的单独文件拆分代码覆盖率?

Bootstrap JS 显然被 webpack 覆盖