customize-cra配置

10,544 阅读1分钟

介绍

customize-cra利用react-app-rewiredconfig-overrides.js文件。通过导入customize-cra功能和出口几个函数调用包在我们的override功能,你可以很容易地修改底层配置对象(webpackwebpack-dev-serverbabel等)组成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()
  )
};

来源链接:github.com/arackaf/cus…

segmentfault.com/a/119000001…