介绍
customize-cra
利用react-app-rewired
的config-overrides.js
文件。通过导入customize-cra
功能和出口几个函数调用包在我们的override
功能,你可以很容易地修改底层配置对象(webpack
,webpack-dev-server
,babel等
)组成create-react-app
。
使用
注意:所有代码应添加到config-overrides.js
与相同的级别package.json
。
结合 webpack
配置
要使用这些插件,请导入override
函数,然后使用所需的任何插件进行调用。这些插件调用中的每一个都将返回一个新函数,该函数override
将使用新修改的config对象
进行调用。但是,虚假值将被忽略,因此,如果您需要有条件地应用这些插件中的任何一个,则可以像下面这样进行操作。
const {
override,
addDecoratorsLegacy,
disableEsLint,
addBundleVisualizer,
addWebpackAlias,
adjustWorkbox
} = require("customize-cra");
const path = require("path");
module.exports = override(
// enable legacy decorators babel plugin
addDecoratorsLegacy(),
// disable eslint in webpack
disableEsLint(),
// add webpack bundle visualizer if BUNDLE_VISUALIZE flag is enabled
process.env.BUNDLE_VISUALIZE == 1 && addBundleVisualizer(),
// add an alias for "ag-grid-react" imports
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")
})
)
);
结合 webpack-dev-server
配置
您可以使用该overrideDevServer
功能覆盖webpack-dev-server
配置。它的工作方式与override
:
const {
override,
disableEsLint,
overrideDevServer,
watchAll
} = require("customize-cra");
module.exports = {
webpack: override(
// usual webpack plugin
disableEsLint()
),
devServer: overrideDevServer(
// dev server plugin
watchAll()
)
};