如何在不执行eject的情况下,在creact-react-app脚手架项目中启用less、装饰器语法,关于报错'decorators-legacy' isn't currently enabled

本文介绍了如何在不执行eject的情况下,在create-react-app(CRA)项目中启用less和装饰器语法。首先,可以通过修改`webpack.config.js`避免eject,其次,利用`react-app-rewired`和`customize-cra`进行配置,解决了'decorators-legacy'未启用的错误。在过程中遇到了CSS Loader的localIdentName问题,通过删除默认参数解决了该问题。
摘要由CSDN通过智能技术生成

太长不看的直接对照我写的demo项目的文档操作就行,文档最下面有介绍如何在其他项目中使用,手工修复的方法本文第三种方案有介绍。

码云项目:demo-less-in-cra

说明文档


个人写css样式更偏好less,奈何react脚手架默认只支持scss,如果直接引入less文件,不会看到任何样式效果(当然项目中提前安装好lessless-loader插件)。

先说第一种方法,脚手架中的npm run eject命令将暴露项目的所有配置文件到根目录,这样只需要执行npm install -D less-loader安装解析器依赖,然后更改.babelrc或者babel.config.js文件的配置就可以实现效果(取决于启用了那个文件的配置)。

操作方法参考


但是eject命令是不可逆的,虽然可以在执行前将代码提交一份来曲线救国,但是对于后期维护不太有利。既然命令是将配置解开暴露到根目录,那么我们不执行命令,直接找的对应的配置文件修改了不就可以了吗?这就是第二种方法

eject命令实际执行react-scripts eject,也就是react-scripts这个依赖项的自定义命令,在node_modules文件夹找到react-scripts后会发现一个文件

node_modules/react-scripts/config/webpack.config.js

只要安装上面参考地址的做法,对这个文件做出同样的修改,也就能在不执行eject命令的情况下达到目的了。

然而这样做又会引出另一个问题。一般情况下项目管理都不会将node_modules文件夹纳入监管列表,一旦别人需要拉取项目,运行后却丢失了所有样式,绝对会一脸懵逼。

既然如此,那我们就必须得在项目跑起来之前用准备好的文件替换依赖项的文件了。关于如何在NodeJS项目中自定义命令以及文件拷贝等问题这里就不再赘述,有兴趣的可以查看以下链接:

NodeJS fs - 文件系统

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值