React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)

简介: React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)

一、简介

  • craco 官方文档craco Github
  • craco 是一个用于扩展 Create React App(CRA)的工具,CRA 是一个用于快速搭建 React 应用的脚手架工具。CRA 提供了一个简单的项目结构和配置,使得开发者可以快速开始一个 React 项目的开发。
    然而 CRA 的配置是被隐藏的,开发者无法对其进行自定义和扩展。这就是 craco 出现的原因。craco(Create React App Configuration Override) 允许开发者覆盖和扩展 CRA 的配置,以满足更复杂的项目需求。
    使用 craco,开发者可以在不弹出 CRA 的配置的情况下,修改 webpack 配置babel 配置ESLint 配置devServer配置 等。craco 提供了一种简单的方式来覆盖 CRA 的默认配置,同时保留了 CRA 的简洁性和易用性。
    通过 craco,开发者可以使用自定义的 webpack 插件babel 插件其他工具,以满足项目的特定需求。例如:可以添加自定义的 webpack loader,配置自定义的 babel presetplugin,或者修改 webpack 的输出路径等。

二、使用

  • 安装
$ npm i -D @craco/craco
  • 根目录创建 craco.config.js 配置文件,可以理解为 Vue 项目中外抛的 vue.config.js
my-app  
    ├── node_modules  
  + ├── craco.config.js  
    └── package.json
  • 配置文件名其他写法支持,如果找到多个配置文件,craco 将使用上面列表中最高的一个:
1、craco.config.ts
2、craco.config.js
3、craco.config.cjs
4、.cracorc.ts
5、.cracorc.js
6、.cracorc
  • 如果多个配置文件,也可以通过 package.json 添加字段指定配置文件:
...
{  
    "cracoConfig": "config/craco-config-with-custom-name.js"  
}
...
  • scripts 指令中指定配置文件进行编译:
{  
    "scripts": {  
        "start": "craco start --config config/craco-config-with-custom-name.js"  
    }  
}
  • 修改 package.json 文件中 scripts 配置的 react-scripts 替换为 craco,例如:
"scripts": {
-   // "start": "react-scripts start",
-   // "build": "react-scripts build",
-   // "test": "react-scripts test",
+   "start": "craco start",
+   "build": "craco build",
+   "test": "craco test",
    "eject": "react-scripts eject"
}
  • craco.config.js 文件中,可以根据需要修改和扩展 CRA 的配置。以下是一个示例配置文件的基本结构:
    基本可以覆盖正常业务的所有需求配置,更多配置可以查看下 官方文档
const path = require('path')
const lessPlugin = require('craco-less')
module.exports = {
  // 插件配置
  plugins: [
    {
      plugin: lessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            // modifyVars: { '@primary-color': '#1DA57A' },
            javascriptEnabled: true
          }
        }
      }
    }
    // ...
  ],
  // 修改 babel 配置
  babel: {
    // plugins: [
    //   ['@babel/plugin-proposal-decorators', { legacy: true }],
    //   [   
    //     'import', 
    //     {
    //       'libraryName': 'antd',
    //       'libraryDirectory': 'es',
    //       'style': 'css' // 设置为 true 即是 less 这里用的是 css
    //     }
    //   ]
    // ]
    // ...
  },
  // 修改 eslint 配置
  eslint: {
    // ...
  },
  // 修改 module 配置
  module: {
    // rules:[// 规则,在写 style.module.scss 的时候发现引入后缀为 .scss 会报错,在这里配置一下即可
    //   {
    //     test: /.scss$/,
    //     loaders: ['style-loader', 'css-loader', 'sass-loader']
    //   }
    // ]
    // ...
  },
  // 跨域配置
  devServer: {
    proxy: {
      '/api': {
        target: 'https://xxx:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
    // ...
  },
  // webpack 配置
  webpack: {
    // 配置别名
    alias: {
      // 约定:使用 @ 表示 src 文件所在路径
      '@': path.resolve(__dirname, 'src')
    },
    // webpack 插件
    plugins: {
      add: [ /* ... */],
      remove: [ /* ... */],
    },
    // plugins: [
    //   new ConfigWebpackPlugin(),
    //   ...whenDev(() => [new CircularDependencyPlugin()], []),
    // ],
    // 这里面是 webpack 原始配置,这里追加的配置,将与原始配置合并
    configure: {
      resolve: {
        fallback: {
          'path': false,
          'util': false,
          'url': false,
          'http': false,
          'https': false,
          'stream': false,
          'assert': false,
          'querystring': false,
          'zlib': false
        }
      }
    }
    // ...
  }
}
相关文章
|
4天前
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
26 3
|
17天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
79 1
|
17天前
|
前端开发 JavaScript UED
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
在React或Vue中,若需在更改用户所属组后更新页面所有数据但不刷新整个页面,可以通过改变路由出口的key值来实现。在用户切换组成功后,更新key值,这会触发React或Vue重新渲染路由出口下的所有组件,从而请求新的数据。这种方法避免了使用`window.location.reload()`导致的页面闪烁,提供了更流畅的用户体验。
31 1
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
|
17天前
|
JavaScript 前端开发 应用服务中间件
本地运行打包好的React、Vue项目
本文讨论了如何本地运行打包好的React和Vue项目,并解决了使用React-Router时Tomcat部署刷新页面导致404的问题,提出了将请求转回index.html的解决方案。
15 1
本地运行打包好的React、Vue项目
|
1天前
|
JavaScript 算法 前端开发
【VUE】Vue的diff算法和React的diff算法
【VUE】Vue的diff算法和React的diff算法
|
6天前
|
开发框架 前端开发 JavaScript
React、Vue.js 和 Angular主流前端框架和选择指南
在当今的前端开发领域,选择合适的框架对于项目的成功至关重要。本文将介绍几个主流的前端框架——React、Vue.js 和 Angular,探讨它们各自的特点、开发场景、优缺点,并提供选择框架的建议。
25 6
|
3天前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
13 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
13天前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
16天前
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
35 4
|
18天前
|
前端开发 JavaScript 开发者
React 和 Vue.js 框架的区别是什么?
React 和 Vue.js 框架的区别是什么?