【REACT16】react老项目版本依赖适配问题

现在react已经升级到v19了,但又很多老项目版本还停滞在16.x

记录下在用react16创建新项目的时候版本依赖问题

package文件版本号

json 复制代码
{
  "name": "ms-bike-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2",
    "react-scripts": "^5.0.1"
  },
  "scripts": {
    "dev": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": []
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@craco/craco": "^6.2.0",
    "craco-less": "^3.0.1",
    "less-loader": "^4.1.0"
  }
}

覆盖cra的默认配置

react-scripts用最新的即可

在首页新建一个craco.config.js配置文件,使用cjs格式

我们在项目中使用的css预处理语言是less,所以直接这样配置使得less文件生效

js 复制代码
const CracoLessPlugin = require('craco-less');
module.exports = {
    plugins: [
        {
            plugin: CracoLessPlugin,
            options: {
                lessLoaderOptions: {
                    lessOptions: {
                        modifyVars: { '@primary-color': '#1DA57A' },
                        javascriptEnabled: true,
                    },
                },
            },
        },
    ],
}

测试效果



这样就不用eject出cra隐藏的配置文件了,后面就可以按需自定义配置文件了

引入antd

正确的版本

bash 复制代码
"antd": "^4.24.16",

其他版本会报错,没试过v5的,查资料说可以支持,可是自己试下

引入的文件必须是less格式才生效

js 复制代码
import 'antd/dist/antd.less';

下面的方式有问题的,会报错,但是也生效,就是控制台看着很乱

js 复制代码
import 'antd/dist/antd.css';
相关推荐
AI浩16 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
涔溪16 小时前
CSS 网格布局(Grid Layout)核心概念、基础语法、常用属性、实战示例和进阶技巧全面讲解
前端·css
2401_8784545316 小时前
浏览器工作原理
前端·javascript
西陵17 小时前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
by__csdn18 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码18 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player19 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu051919 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys19 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选19 小时前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc