前言
您好,我是本际云服务器推荐网的小编小本本。如果您使用CRA脚手架构建的项目想要修改webpack配置,一般情况下需要将其释放或通过插件去更改和覆盖配置。接下来,我将介绍以下几种常见方式:

利用react-app-rewired修改或覆盖配置(推荐)
方法一:
- 下载插件和依赖
- 修改package.json
- 新建config-overrides.js文件
yarn add react-app-rewired customize-cra babel-plugin-import -D
将scripts中的内容修改为以下代码:
{
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
}
}
在项目根目录下新建config-overrides.js文件并添加以下代码:
const { override, fixBabelImports, addLessLoader } = require("customize-cra");
module.exports = override(
fixBabelImports("import", {
libraryName:'antd',
libraryDirectory:"es",
style:true
}),
addLessLoader({
javascriptEnabled:true
})
);
这里的配置能够使webpack支持less语法。可以发现,这里与通常配置的webpack不太一样。详细配置可以查看react-app-rewired官方文档。然后,将App.css和index.css文件改为App.less和index.less,并在项目中引入即可。
利用插件@craco/craco修改或覆盖配置
方法二:
- 安装插件和依赖
- 新建craco.config.js文件
yarn add @craco/craco craco-less @babel/plugin-proposal-decorators babel-plugin-import -D
在根目录下新建craco.config.js文件并添加以下代码:
const CracoLessPlugin = require("craco-less");
const path = require('path');
const pathResolve = pathUrl => path.join(__dirname, pathUrl);
module.exports = {
webpack: {
alias: {
'@': pathResolve('src')
}
},
babel: {
plugins: [
['@babel/plugin-proposal-decorators', { legacy: true }]
]
},
plugins: [
{
plugin: CracoLessPlugin,
options: {
lessLoaderOptions: {
lessOptions: {
modifyVars: {},
javascriptEnabled: true
}
}
}
}
]
};
这里的配置支持引入@别名,以及使用装饰器。具体使用在src下新建pages/index.js文件,然后在该文件中引入插件。@babel/plugin-proposal-decorators很好理解,代表支持装饰器。@craco/craco则是可以更方便的修改webpack配置。
完全编译webpack到项目中
方法三:
- 释放webpack配置
- 配置less-loader
可以通过执行yarn eject命令将CRA脚手架将webpack等复杂的配置封装在项目中的配置释放,使之可见,并然后自行修改。但该过程不可逆,且项目文件将骤增。
配置引入less-loader在config/webpack.config.js文件的module/rules下添加该配置,并在项目中添加common.less文件。最后在index.tsx文件中引入即可。
注意:less-loader版本不能超过6.0.0,否则会报错。而且该方案会使项目文件骤增,并且适用于已经了解了webpack配置。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7404.html
