首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Webpack动态加载角-i18n区域设置文件的一个子集。

使用Webpack动态加载角-i18n区域设置文件的一个子集。
EN

Stack Overflow用户
提问于 2017-04-25 20:07:12
回答 1查看 866关注 0票数 2

使用Webpack 2.3.3和Babel-装载机

我刚开始使用webpack,我正尝试用Webpack来捆绑ange-i18n地区文件。我有一个config对象,它列出了应用程序支持的区域设置。例如:

代码语言:javascript
复制
var supportedLocales = {
  'FR': {
    currency: 'EUR',
    id: 'fr-fr'
  },
  'GB': {
    currency: 'GBP',
    id: 'en-gb',
  },
  'US': {
    currency: 'USD',
    id: 'en-us'
  }
}

安装角-i18n库时,它会输出node_modules/angular-i18n/目录中的所有区域设置。例如:

代码语言:javascript
复制
node_modules/
  |_ angular-i18n/
     |_ angular-locale_en-gb.js
     |_ angular-locale_en-us.js
     |_ angular-locale_fr-fr.js
     |_ ...

webpack.config.js (简化为员额)

代码语言:javascript
复制
  module.exports = {
    context: path.join(config.appDir, '/client/assets'),
    entry: {
      main: [
        './js/index.js'
      ]
    },
    plugins: [
      new webpack.DefinePlugin({
        'SUPPORTED_LOCALES': JSON.stringify({
          supportedLocales
        })
      }),
    module: {..etc}
  };
  1. 是否有一种方法可以基于supportedLocales动态加载这些特定的角度区域设置文件并将其包含在main.js包中?例如:

index.js

代码语言:javascript
复制
// This doesn't work
_.each(SUPPORTED_LOCALES, function(locale) {
    require(`angular-i18n/angular-locale_${locale.id}`);
})
  1. 是否有可能仅仅捆绑这些特定的角度区域设置文件,并将其作为一个新的文件locales.js在应用程序运行时?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-04-25 21:06:39

如果您使用字符串文字显式地require每个区域设置,webpack应该理解这一点,并且只包括必要的模块:

代码语言:javascript
复制
require('angular-i18n/angular-locale_fr-fr');
require('angular-i18n/angular-locale_en-gb');
// ...

您的require-ing风格迫使webpack将模板字符串的所有可能匹配包含到包中,因为它不执行您的代码。有关所发生的事情的更详细说明,请参见这个答案:webpack dynamic module loader by require (或者直接链接到docs:https://webpack.js.org/guides/dependency-management/#require-with-expression)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43620029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档