通过 react 脚手架 create-react-app 创建了项目,但是发现了一个问题 如果没有执行 eject 命令的话 是没有其他配置文件的 这个时候就需要 用到 customize-cra 和 react-app-rewired 插件 然后在根目录下新建一个名称为 config-overrides.js 的文件
npm install react-app-rewired customize-cra --save-dev
"scripts": {"start": "react-app-rewired start","build": "react-app-rewired build","test": "react-app-rewired test","eject": "react-scripts eject"},
项目根目录创建config-overrides.js
module.exports = function override(config, env) {return config}// module.exports = {// webpack: (config) => {// config.output.library = `reactApp`// config.output.libraryTarget = "umd"// config.output.publicPath = "http://localhost:20000/"// return config// },// devServer: function(configFunction) {// return function(proxy, allowedHost) {// const config = configFunction(proxy, allowedHost)// config.headers = {// "Access-Control-Allow-Origin": "*",// }// return config// }// },// }
babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件
npm install babel-plugin-import --save-dev
//引入const { injectBabelPlugin } = require("react-app-rewired")//使用module.exports = function override(config, env) {config = injectBabelPlugin(["import", { libraryName: "antd", style: true }],config)return config}
然后在组件中就可以直接进行引用
import { Button } from "antd"
安装所需 less 依赖
npm install less-loader less --save-dev
npm install --save-dev react-app-rewire-less
const rewireLess = require("react-app-rewire-less")config = rewireLess.withLoaderOptions({modifyVars: { "@primary-color": "#1DA57A" },javascriptEnabled: true,})(config, env)
antd 在线换肤定制功能
config = rewireLess.withLoaderOptions({modifyVars: getLessVars(path.join(__dirname, "./src/styles/vars.less")),javascriptEnabled: true,})(config, env)
const { override, addWebpackAlias} = require('customize-cra');const path = require('path')module.exports = override(addWebpackAlias({assets: path.resolve(**dirname, './src/assets'),pages: path.resolve(**dirname, './src/pages')}));