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 前端开发 测试技术
React和Vue的性能对比如何?
需要注意的是,性能不仅仅取决于框架本身,还与开发者的代码质量、架构设计以及项目的优化程度等密切相关。因此,在评估性能时,应该综合考虑多个因素,而不是仅仅局限于框架之间的比较。
45 1
|
10天前
|
JavaScript 前端开发 算法
React 框架和 Vue 框架的区别是什么?
React框架和Vue框架都是目前非常流行的前端JavaScript框架,它们在很多方面存在区别
|
25天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
64 10
|
24天前
|
资源调度 前端开发 数据可视化
构建高效的数据可视化仪表板:D3.js与React的融合之道
【10月更文挑战第25天】在数据驱动的时代,将复杂的数据集转换为直观、互动式的可视化表示已成为一项至关重要的技能。本文深入探讨了如何结合D3.js的强大可视化功能和React框架的响应式特性来构建高效、动态的数据可视化仪表板。文章首先介绍了D3.js和React的基础知识,然后通过一个实际的项目案例,详细阐述了如何将两者结合使用,并提供了实用的代码示例。无论你是数据科学家、前端开发者还是可视化爱好者,这篇文章都将为你提供宝贵的洞见和实用技能。
50 5
|
24天前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
24天前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
24天前
|
JavaScript 前端开发 算法
在性能上,React和Vue有什么区别
【10月更文挑战第23天】在性能上,React和Vue有什么区别
16 1
|
27天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
26 4
|
29天前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
24天前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】 React与Vue:前端框架的巅峰对决与选择策略