管理不同构建环境(如 QA、UAT、生产)的 JavaScript 配置文件

sim*_*olo 5 javascript build-process release-management single-page-application

因此,您正在使用静态服务的 JavaScript 构建一个独立的单页应用程序。它连接到一个 API。

您的应用程序中有一个 JSON 对象,main.js如下所示:

var config = {
 apiPath: 'http://dev.api.example.com',
 appTitle: 'hello'
};
Run Code Online (Sandbox Code Playgroud)

你使用 Grunt 创建一个发布版本,这会将你所有的 SASS、ES6、AMD 模块等代码转换成一两个 JavaScript 文件,以及这个配置对象。

您的生产 API url 是http://api.example.com,当您进行发布构建时,您只想更改配置中的此值。(也许您也想更改其他配置参数)。你有一个发布配置

var config = {
 apiPath: 'http://api.example.com'
};
Run Code Online (Sandbox Code Playgroud)

在构建期间如何根据不同类型的发布环境更改 JavaScript 配置文件。请注意,我想将发布配置合并到默认配置中,而不是维护具有所有设置的完全独立的文件。虽然有用于设置构建模式的 grunt 插件,但我没有找到任何能够更新配置文件的插件,只有更改指向哪个文件的 hacks。

ASP.NET 具有web.config完全执行此操作的转换,例如,发布转换中的任何属性都将覆盖打包时的“默认”配置。使用 grunt 或其他东西是否存在这样的工作流程?

sim*_*olo 1

最后,我通过使用环境变量和一个名为Confidence的令人惊叹的节点的组合自己解决了这个问题,在该节点中,您将所有不同的 envs 配置设置放在一个文件中,并且它们根据过滤器解析为单个配置(例如环境变量) - 然后可以使用 WebPack 等工具将它们注入到构建过程中。