Webpack:无需捆绑即可加载外部JSON

时间:2016-04-19 16:01:36

标签: javascript webpack

我正在使用redux + deku建立我的第一个单页网站,我需要将其国际化。我想要一个包含所有文本的json文件,如下所示:

# http://mysite.me/assets/i18n.json
{
  "en": {
    "greeting": "Hello"
  },
  "es": {
    "greeting": "Hola"
  }
}

理想情况下,我可以在启动文件中要求它:

const T = require('/assets/i18n.json')
setTranslation(T)

但它不能捆绑在同一个文件中,它应该仍然是外部依赖项,它应该在运行时加载,这样我就可以编辑它而无需重新编译整个应用程序!

webpack可以吗?我唯一的选择是直接将其包含在HTML中吗?

<script type="text/javascript" src="i18n.js"></script>
<script type="text/javascript" src="app.js"></script>

目前最后一个解决方案还可以,但我正在考虑拆分每个主要组件的翻译,因此直接通过js包含它的能力会很好。

感谢任何有帮助的人:)

1 个答案:

答案 0 :(得分:3)

一个选项是不require文件而是fetch(或其他一些请求方法),然后从webpack中排除JSON。

另一种方法是使用webpack的公共块插件拆分代码。你的webpack配置看起来像这样:

entry: {
    app: './index.jsx',
    i18n: [
        'en',
        'fr',
        '...others'
    ]
},
output: {
    path: '/path/to/dist/',
    filename: '[name].js'
}

有关详细信息,请参阅official docs