javascript - 如何将 webpack 插件添加到react-rewired

标签 javascript reactjs webpack babeljs create-react-app

我使用带有react-rewired 包装器的rca。为了向 webpack 添加自定义配置,我创建了 config-overrides.js 文件,用于存储配置设置。我添加了一个 babel-plugin-import ,这非常简单。但现在我想使用 moment-locales-webpack-plugin 在我的应用程序中仅配置一种语言环境,以减轻应用程序的重量。

const { override, fixBabelImports, addWebpackPlugin  } = require('customize-cra');
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');

module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
  }),
  addWebpackPlugin(MomentLocalesPlugin, { localeToKeep: ['us'] }),
);

yarn 启动后,它向我显示:

编译失败。

MomentLocalesPlugin: received unknown options: _pluginCompat, hooks, name, parentCompilation, outputPath, outputFileSystem, inputFileSystem, recordsInputPath, recordsOutputPath, records, removedFiles, fileTimestamps, contextT
imestamps, resolverFactory, infrastructureLogger, resolvers, options, context, requestShortener, running, watchMode, _assetEmittingSourceCache, _assetEmittingWrittenFiles, watchFileSystem. Only `localesToKeep` and `ignoreInva
lidLocales` options are supported at the moment

你能帮我吗?

更新 我了解了如何向 override 函数添加规则,但仍然无法使其仅适用于 1 个区域设置。

const { override, fixBabelImports } = require('customize-cra');
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const path = require('path');

module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
  }),
  function(config) {
    const alias = config.resolve.alias || {};
    alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, './src/icons.js');

    config.resolve.alias = alias;
    config.plugins = (config.plugins || []).concat([
      new MomentLocalesPlugin(),
      new BundleAnalyzerPlugin(),
    ]);

    return config;
  }
);

最佳答案

根据this issuecustomize-cra添加插件的正确方法是:

const MomentLocalesPlugin = require('moment-locales-webpack-plugin');

const addMomentLocalesPlugin = config => {
  config.plugins.push(new MomentLocalesPlugin());
  return config;
}

module.exports = override(
  addMomentLocalesPlugin,
  //...
)

如果您只想在 bundle 中保留几种语言,您可以尝试:

new MomentLocalesPlugin({ localesToKeep: ['es-us', 'pt'] })

而不是

new MomentLocalesPlugin()

关于javascript - 如何将 webpack 插件添加到react-rewired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881130/

相关文章:

javascript - react-select debounced async call不显示建议

css - Vue.js 作用域 css 在单个文件组件中不起作用

javascript - 如何解决 "Access Denied: Invalid token, wrong code"的问题?

javascript - 如何在数据表的单元格内添加一个按钮以在弹出窗口中显示详细信息?

javascript - 在 React 中,是否可以避免在按下浏览器后退按钮时从服务器重新加载数据(不使用 Redux)?

javascript - 在 React 中传递状态更新器 clickHandler

javascript - angular.equals() 占用了 50% 的执行时间

javascript - 使用带有 UseEffect 的自定义钩子(Hook)进行无限循环

npm - 为 Vue JS 项目构建 dist 文件夹

Angular 2 RC5 & @angular/router 3.0.0-rc.1 无效配置或错误?