当你使用webpack时,有没有办法阻止moment.js下载所有的区域设置(我只需要英语)?我在查看源代码时发现,如果定义了hasModule,也就是webpack,那么它总是try 在每个区域设置require().我很确定这需要一个 pull 请求来修复.但我们有没有办法用网页配置解决这个问题?

这是我加载momentjs的网页配置:

resolve: {
            alias: {
                moment: path.join(__dirname, "src/lib/bower/moment/moment.js")
            },
        },

然后在我需要的任何地方,我只需要做require('moment')次.这是可行的,但它将向我的包中添加大约250 kB的不需要的语言文件.我还使用了momentjs和gulp的bower版本.

此外,如果这个问题无法通过网页包配置解决,这里是a link to the function where it loads the locales.我试着在if语句中加上&& module.exports.loadLocales,但我猜webpack实际上并没有用那种方式工作.不管怎样都是这样.我认为它现在使用了正则表达式,所以我真的不知道你会如何着手修复它.

推荐答案

代码require('./locale/' + name)可以使用locale目录中的每个文件.所以webpack将每个文件作为模块包含在包中.它无法知道你在使用哪种语言.

two plugins种方法非常有用,可以为webpack提供更多关于包中应该包含哪个模块的信息:ContextReplacementPluginIgnorePlugin.

require('./locale/' + name)称为context(包含表达式的要求).webpack从这段代码中推断出一些信息:目录和正则表达式.这里:directory = ".../moment/locale" regular expression = /^.*$/.因此,默认情况下,locale目录中的每个文件都包含在内.

ContextReplacementPlugin允许覆盖推断信息,即提供一个新的正则表达式(以 Select 要包含的语言).

另一种方法是忽略IgnorePlugin的要求.

下面是一个例子:

var webpack = require("webpack");
module.exports = {
  // ...
  plugins: [
    new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /de|fr|hu/)
    // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
  ]
};

Javascript相关问答推荐

为什么我会获取MUI Date TimePicker TypHelp:Value.isValid不是AdapterDayjs.isValid中的函数

我的JS代码将按照哪个序列被解释

在JS中转换mysql UTC时间字段?

React状态变量在使用++前置更新时引发错误

JS生成具有给定数字和幻灯片计数的数组子集

将json数组项转换为js中的扁平

Vega中的模运算符

GrapeJS -如何保存和加载自定义页面

togglePopover()不打开但不关闭原生HTML popover'

Phaser 3 console. log()特定游戏角色的瓷砖属性

我可以从React中的出口从主布局调用一个处理程序函数吗?

将自定义排序应用于角形数字数组

Next.js(react)使用moment或不使用日期和时间格式

编剧如何获得一个div内的所有链接,然后判断每个链接是否都会得到200?

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

令牌JWT未过期

Phaser3 preFX addGlow不支持zoom

将多个文本框中的输出合并到一个文本框中

Node.js错误: node 不可单击或不是元素