Webpack:是否有可能在编译时评估JavaScriptexpression式?

我正在尝试为我的项目安装webpack。 该项目足够大,并提供多种语言。 我希望每个语言都提供每个入口点作为单独的文件。 我的语言文件不仅仅是简单的JSON,而是JavaScript。 所以i18n插件不符合我的需求。

解决scheme似乎与i18n插件类似:

var languages = ['en', 'fr', 'de']; module.exports = languages.map(function (lang) { return { name: lang, // some other language-dependent config } }) 

然后在我的一些脚本中,我想使用环境variables来要求本地化文件:

 var lang = ...; // some environment variable, available only at compile time var l10n = require('./lang/' + lang); 

但默认情况下,webpack会尝试在括号之间存储该expression式,假定稍后在浏览器中对其进行评估。

那么有没有办法告诉webpack立即评估?

或者,也许有人有一个更好的解决我的问题?

您应该能够使用Webpack的DefinePlugin在编译时设置语言。

例如,你可以写你的需求为:

 var l10n = require('./lang/' + APPLICATION_LANGUAGE); 

并在你的configuration,有

 plugins: [ new webpack.DefinePlugin({ APPLICATION_LANGUAGE: JSON.stringify(lang) }) ] 

你可以让你的构build脚本根据某些参数或envvariables或其他内容有条件地设置“lang”。