Webpack IgnorePlugin 不适用于 date-fns 区域设置文件

问题描述 投票:0回答:1

我尝试使用 IgnorePlugin 从 Webpack 配置中的 date-fns 包中排除区域设置文件。然而,尽管我进行了配置,Webpack 仍然将语言环境文件包含在捆绑包中。我希望忽略区域设置目录,但它没有按预期工作。

这是我的 Webpack 配置:

new webpack.IgnorePlugin({   
resourceRegExp: /[/\\]locale[/\\]/, // Ignore any file inside the 'locale' directory  
contextRegExp: /date-fns$/,         // Ensure it's within 'date-fns' 
}),

附加信息: 我正在将 esm 导入用于 date-fns。 我试图通过排除区域设置文件来减小包的大小,因为我只需要特定的区域设置。 清除 Webpack 缓存并没有解决问题。

预期行为:

Webpack 应忽略区域设置目录,减少包大小并从最终构建中删除区域设置文件。

实际行为:

尽管有 IgnorePlugin 配置,语言环境文件仍然包含在捆绑包中。`

reactjs webpack date-fns
1个回答
0
投票

要使用 ContextReplacementPlugin 从 date-fns 包中排除所有语言环境,您共享的配置看起来是正确的。其工作原理如下:

ContextReplacementPlugin:该插件用于替换动态导入的上下文,确保 Webpack 跳过包含不必要的语言环境文件。 这是基于您的配置的完整示例:

import webpack from "webpack";
import path from "path";
import { supportedLocales } from "./config.js"; // assuming this config 
file exists

export default {
  resolve: {
  alias: {
  // Create an alias for date-fns-locale directory
  "date-fns-locale": path.dirname(require.resolve("date- 
  fns/package.json")),
  },
},
plugins: [
new webpack.ContextReplacementPlugin(
  /date-fns[/\\]locale/,
  /$^/,),
  ],
};

ContextReplacement插件:

第一个参数 /date-fns[/\]locale/ 告诉 Webpack 在 date-fns 中查找 locale 目录。 第二个参数 /^$/ (不匹配任何内容)确保 Webpack 不包含语言环境目录中的任何文件,从而有效地排除所有语言环境。

日期-fnf 参考

© www.soinside.com 2019 - 2024. All rights reserved.