javascript - Webpack:是否可以在编译时评估 javascript 表达式?

标签 javascript node.js bundling-and-minification webpack

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

解决办法好像是i18n plugin:

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

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

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

但默认情况下,webpack 会尝试将该表达式存储在括号之间,假设稍后在浏览器中对其进行计算。

那么有没有办法告诉 webpack 立即对其进行评估?

或者也许有人对我的问题有更好的解决方案?

最佳答案

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

例如,您可以将您的要求写成:

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

在你的配置中,有

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

您可以让您的构建脚本根据某些参数或环境变量或其他内容有条件地设置“lang”。

关于javascript - Webpack:是否可以在编译时评估 javascript 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037307/

相关文章:

node.js - 复杂的应用程序逻辑在 MVC 模型中属于哪里?

node.js - NodeJS HTTP 服务器需要很长时间才能关闭

node.js - Azure管道: Cannot download "https://github.com/sass/node-sass/releases/download/v4.13.0/win32-x64-83_binding.node"

javascript - MVC 4 捆绑和缩小 - 变量名称更改

javascript - 更正移动正则表达式模式

javascript - 对背景图像的淡入效果

javascript - React 不更新组件 Prop ?

javascript - 谷歌地图在地址上显示标记

asp.net-mvc - 调试设置为 false 后 MVC 脚本包的顺序错误

c# - 使用 ASP.NET 4.5 捆绑和 CDN(例如 CloudFront)