我想通过react-app-rewired重写Webpack的配置。但是我使用Ant设计我的项目,所以我必须使用Customize-CRA来导入Babel插件等。
React-app-rewired的config-overrides.js如下所示:
module.exports = function override(config, env) {
config.module.rules = config.module.rules.map(rule => {
if (rule.oneOf instanceof Array) {
return {
...rule,
oneOf: [
{
test: /\.(svg|png|jpg|jpeg|gif|bmp|tiff)$/i,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name]-[hash:8].[ext]'
}
}
]
},
...rule.oneOf
]
};
}
return rule;
});
return config;
}Customize-CRA的config-overrides.js如下:
const {override, fixBabelImports, addLessLoader, addDecoratorsLegacy, disableEsLint} = require('customize-cra');
module.exports = override(
addDecoratorsLegacy(),
disableEsLint(),
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: {'@primary-color': '#a50052'},
}),
);谢谢。
发布于 2019-06-11 07:23:58
我想我遇到了和你一样的问题。customize-cra覆盖将任意数量的覆盖函数作为参数。每个函数都被赋予config作为其第一个参数。可以把它想象成一个组合函数。获取您现有的覆盖导出,将其放入您定义的函数中,我调用myOverrides或其他函数,然后将customize-cra的覆盖与您的覆盖函数一起导出为其中一个参数。
之前:
module.exports = function override(config, env){
// do stuff to config
return config
}之后:
function myOverrides(config) {
// do stuff to config
return config
}
module.exports = override(
myOverrides,
addDecoratorsLegacy(),
disableEsLint(),
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
javascriptEnabled: true,
modifyVars: {'@primary-color': '#a50052'},
}),
);发布于 2019-05-24 17:45:25
将react-app-rewired config放在customize-cra之后,对我很有效。如果我将一个对象分配给config,它就不能工作,但如果我逐行修正config,它就能工作。我相信有一个更优雅的解决方案。
module.exports = function override(config, env) {
const APP = process.env.REACT_APP_APP
const BRAND = process.env.REACT_APP_BRAND
addWebpackAlias({
['@app-config']: path.resolve(__dirname, `./src/brands/${BRAND}/app`),
})
config.entry = `./src/${APP}/index.js`
config.resolve.alias['@app-config'] = path.resolve(__dirname, `./src/brands/${BRAND}`)
config.resolve.modules = [
path.join(__dirname, `src/brands/${BRAND}`)
].concat(config.resolve.modules)
return config
};
发布于 2019-05-25 16:49:19
我从ant设计文档中找到了一些提示:
const {
override,
fixBabelImports,
} = require("customize-cra");
module.exports = override(
fixBabelImports("import", {
libraryName: "antd-mobile",
style: 'css'
})
);参考:
https://mobile.ant.design/docs/react/use-with-create-react-app#Use-modularized-antd-mobile
https://stackoverflow.com/questions/55448344
复制相似问题