react中配置全局less變量

配置步驟:

  • 引入react-app-rewired插件
    react-app-rewired的做用就是在不eject的狀況下,覆蓋create-react-app的配置
  • 安裝customize-cra
    npm install react-app-rewired customize-cra --save-dev
  • 安裝style-resources-loader
    npm install style-resources-loader
  • 修改 package.json 裏的啓動配置
/* package.json */
"scripts": {
-   "start": "react-scripts start",
+   "start": "react-app-rewired start",
-   "build": "react-scripts build",
+   "build": "react-app-rewired build",
-   "test": "react-scripts test --env=jsdom",
+   "test": "react-app-rewired test --env=jsdom",
}
  • 在配置文件 config-overrides.js中修改
const {
    override,
    addLessLoader, // less配置函數
    fixBabelImports, // 按需加載配置函數
    addBabelPlugins, // babel插件配置函數
    addWebpackAlias, // /路徑別名
} = require('customize-cra');
const path = require("path");
module.exports = override(
    ...addBabelPlugins( // 支持裝飾器
        [
            '@babel/plugin-proposal-decorators',
            { legacy: true}
        ]
    ),
    fixBabelImports('import', { // antd 按需加載
        libraryName: 'antd',
        libraryDirectory: 'es',
        style: true  //自動打包相關的樣式 默認爲 style:'css',這裏須要改成true
    }),
    addLessLoader(
        {
            javascriptEnabled: true,
            modifyVars: { '@primary-color': '#004080' }  //這裏也能夠配置全局的樣式變量,不建議在配置文件中添加,這個修改@primary-color主要是爲了修改antd的主題色
        }
    ),
    addWebpackAlias({ //路徑別名
        '@': path.resolve(__dirname, 'src'),
    }),
    (config) => {
        //修改、添加loader 配置 :
        // 全部的loaders規則是在config.module.rules(數組)的第二項
        // 即:config.module.rules[2].oneof  (若是不是,具體能夠打印 一下是第幾項目)
        // 修改 less 配置 ,規則 loader 在第7項(具體能夠打印配置)
        const loaders = config.module.rules.find(rule => Array.isArray(rule.oneOf)).oneOf;
        console.log(loaders)
        loaders[7].use.push({
            loader: 'style-resources-loader',
            options: {
                patterns: path.resolve(__dirname, 'src/style/common.less')//全局引入公共的scss 文件
            }
        })
        return config
    }
)
  • common.less
@import 'reset.less';
@import 'variable.less';
.center {
    display: flex;
    align-items: center;
    justify-content: center;
}
  • variable.less,須要添加全局樣式變量,直接在這個文件添加
@primary-color: #004080;
@bg-gray-color: #F4F4F4;
相關文章
相關標籤/搜索