Create-react-app中如何进行对webpack的配置
安装 yarn add react-app-rewired customize-cra
react-app-rewired 在不eject也不创建额外的react-scripts的情况下修改 create-react-app内置的webpack配置,拥有一切create-react-app的一切特性
替换package.json的scripts 为
/* package.json */
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
}
然后在项目目录创建
config-overrides.js
用于修改默认配置。
module.exports = function override(config, env) {
// do stuff with the webpack config...
return config;
};
使用最新的 react-app-rewired 要安装customize-cra,安装后的
config-overrides.js
写法
const {
override,
fixBabelImports,
addDecoratorsLegacy,
disableEsLint,
addBundleVisualizer,
addWebpackAlias,
adjustWorkbox,
addLessLoader,
useBabelRc
} = require('customize-cra');
const path = require("path");
module.exports = override(
//按需加载
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: 'css',
}),
// antd 自定义主题 less 变量覆盖全局 依赖 less、less-loader
addLessLoader({
javascriptEnabled: true,
modifyVars: {
'@primary-color': '#814a96'
}
}),
// 启用装饰器 依赖 依赖 @babel/plugin-proposal-decorators
addDecoratorsLegacy(),
// disable eslint in webpack
disableEsLint(),
// 允许使用.babelrc文件进行Babel配置。
useBabelRc(),
// add webpack bundle visualizer if BUNDLE_VISUALIZE flag is enabled
process.env.BUNDLE_VISUALIZE == 1 && addBundleVisualizer(),
// 配置别名
addWebpackAlias({
["ag-grid-react$"]: path.resolve(__dirname, "src/shared/agGridWrapper.js")
}),
// adjust the underlying workbox
adjustWorkbox(wb =>
Object.assign(wb, {
skipWaiting: true,
exclude: (wb.exclude || []).concat("index.html")
})
)
)
以上为个人总结,有不足有误之处欢迎指出。
版权声明:本文为weixin_44525501原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。