create-react-app默认配置进行自定义craco

Posted 胖鹅68

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了create-react-app默认配置进行自定义craco相关的知识,希望对你有一定的参考价值。

一、参考

  1. github craco 安装
  2. antUI在create-react-app使用

二、问题描述

项目使用 create-react-app 创建项目,UI 使用Ant-UI,现在需要修改antUI的主题,尝试了各种办法,效果不好,最后替换使用 craco 来启动项目

三、 craco 介绍

3.1 craco 快速入门

  1. 安装依赖

yarn add @craco/craco
或者
npm install @craco/craco --save

  1. 修改package.json的script
"scripts": {
-   "start": "react-scripts start",
-   "build": "react-scripts build",
-   "test": "react-scripts test",
+   "start": "craco start",
+   "build": "craco build",
+   "test": "craco test",
}
  1. 启动 —— npm start

  2. 发布 —— npm run build

  3. 添加自定义的配置文件——在根目录下创建 craco.config.js

module.exports = {
// ...
};

3.2 修改antUI主题

  1. 把 src/App.css 文件修改为 src/App.less,然后修改样式引用为 less 文件
src/App.js
- import './App.css';
+ import './App.less';
src/App.less
- @import '~antd/dist/antd.css';
+ @import '~antd/dist/antd.less';
  1. 安装 craco-less

yarn add craco-less

  1. 并修改 craco.config.js
const CracoLessPlugin = require('craco-less');

module.exports = {
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: { '@primary-color': '#1DA57A' },
            javascriptEnabled: true,
          },
        },
      },
    },
  ],
};

3.3 添加别名

const path = require('path')
const pathResolve = (pathUrl) => path.join(__dirname, pathUrl)

module.exports = {
  webpack: {
    // 设置别名
    alias: {
      '@': pathResolve('src'),
      '@assets': pathResolve('src/asserts'),
      '@images': pathResolve('src/asserts/images'),
      '@components': pathResolve('src/components'),
      '@hooks': pathResolve('src/hooks'),
      '@pages': pathResolve('src/pages'),
      '@utils': pathResolve('src/utils')
    }
  }
}

3.4 设置工程的路径

module.exports = {
  webpack: {
    // 返回webpack的配置信息
    configure: (webpackConfig, { env, paths }) => {
      console.log(webpackConfig)
      // 设置项目的上下文目录
      // webpackConfig.output.publicPath = './hb'
      webpackConfig.output.publicPath = './'
      return webpackConfig
    }
  }
}

3.5 添加代理

module.exports = {
  devServer: {
    port: 3000,
    proxy: {
      '/interview': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
}

以上是关于create-react-app默认配置进行自定义craco的主要内容,如果未能解决你的问题,请参考以下文章

create-react-app自定义配置

create-react-app中antd按需加载配置+自定义主题

create-react-app项目配置

基于create-react-app脚手架,按需加载antd组件以及less样式

如何设置 React 自定义端口,如 3129

create-react-app多环境配置