当前位置: 首页 > 知识库问答 >
问题:

如何防止moment.js用webpack加载区域设置?

夹谷星河
2023-03-14

当你使用webpack时,有什么方法可以阻止moment.js加载所有的语言环境(我只需要英语)?我在看源代码,似乎如果定义了hasMoules,它是为webpack定义的,那么它总是试图要求()每个区域设置。我很确定这需要一个拉请求来修复。但有什么办法,我们可以修复这个与webpack配置?

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

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

然后,无论我在哪里需要它,我都只需要require('moment')。这是可行的,但它会将大约250 kB不需要的语言文件添加到我的包中。我还使用了momentjs和gulp的bower版本。

此外,如果webpack配置无法修复此问题,则此处有一个指向加载区域设置的函数的链接。我尝试添加


共有3个答案

储嘉悦
2023-03-14

更新:2021
您可能需要签出许多其他LIB:

  • https://date-fns.org
  • https://github.com/iamkun/dayjs

原始答案:
看起来合适的模块化时刻库永远不会出现,但是,我只是最终使用了像导入*这样的https://github.com/ksloan/moment-mini作为“时刻迷你”的时刻;

宣滨海
2023-03-14
匿名用户

在我们的项目中,我包括这样的时刻:从'时刻/src/时刻'导入时刻;,这似乎可以做到。不过,我们对矩的使用非常简单,所以我不确定是否会与SDK有任何不一致之处。我认为这是可行的,因为WebPack不知道如何静态地找到区域设置文件,所以你会得到一个警告(这很容易通过在时刻/src/lib/locale/locale添加一个空文件夹来隐藏),但是没有区域设置包括。

温浩大
2023-03-14

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

有两个插件非常有用,可以为webpack提供有关捆绑包中应包含哪些模块的更多信息:ContextReplacementPluginIgnorePlugin

要求('./locale/'name)被称为上下文(包含表达式的要求)。webpack从这个代码片段中推断出一些信息:目录和正则表达式。这里:目录=".../时刻/区域设置"正则表达式 = /^.*$/。所以默认情况下,locale目录中的每个文件都包括在内。

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

另一种方法是使用IgnorePlugin忽略需求。

这里有一个例子:

var webpack = require("webpack");
module.exports = {
  // ...
  plugins: [
    new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /de|fr|hu/)
    // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
  ]
};
 类似资料:
  • 本文向大家介绍如何防止moment.js用webpack加载语言环境?,包括了如何防止moment.js用webpack加载语言环境?的使用技巧和注意事项,需要的朋友参考一下 本地文件是.json文件,其中包含主题模板文件中使用的文本字符串的一组翻译。每种语言都使用单独的本地文件。 当您在代码中需要moment.js并将其与webpack打包在一起时,捆绑包的大小会变得很大,因为它包含所有区域设置

  • 问题内容: 有没有办法用javascript / jquery防止图像加载?我正在从带有图像的html列表构建幻灯片。因此,我想收集所有src数据,然后阻止加载图像。因此,稍后当用户真正需要图像时,我便会加载它。 我在Google上找到了一些延迟加载脚本,但找不到阻止图像加载的方式。 提前致谢。 Edit1: 从答案看来,不可能使用javascript来防止图像加载。 这是一个执行延迟加载的脚本。

  • 问题内容: 在我以前的Meteor应用程序中,使用browserify和React,所有功能都可以使用,直到我切换到meteor webpack为止 。 我在Meteor应用程序中使用react-select,效果很好,但是使用browserify可以防止加载多个react副本,从而避免出现此错误: 我的package.json看起来像这样: Webpack中是否有配置,我可以使用外部调用?尚不完

  • 我在我的应用程序中使用导航栏,每次我选择一个项目时,它都会加载一个片段。 我能够使用相同的文本字段和按钮保存片段的状态,但有一个片段可以加载地图、添加标记、集群并执行。 每次我转到另一个菜单项并返回时,它都会重新加载所有内容,例如AsyncTask、Cluster、Markers。我如何停止此片段以不再重新创建地图并在返回时保存状态: Udate 1:我更新了代码,但问题仍然存在 主要活动: 主片

  • 问题内容: 我有几个使用相同的JNI库的类,称为“ jni”。在每个此类中,我在该类的静态初始值设定项中都有一个System.loadLibrary()调用: 唯一的问题是,我只希望System.loadLibrary()被调用一次,因为这可能需要一段时间。有没有一种简便的方法来防止同一库的多次加载? 问题答案: 如果已经加载了库,则随后的任何加载相同库的调用都将被忽略。 : 加载由libname