【发布时间】:2019-12-06 15:24:56
【问题描述】:
我们有一个具有多个环境的应用程序,并且即将拥有多个供应商。我知道典型的流程是运行webpack --env.NODE_ENV=myenvironment,但是,这很快就会变得非常低效。
最终,我的目标很简单,就是将environment.json 文件复制到输出文件夹并使用它,这样我就可以在 Octopus Deploy 中执行转换,而不必运行多个构建。
换句话说,我想利用一个environment.json 文件在Octopus Deploy 中提供变量替换。这是environment.json 的示例:
{
"production": false,
"baseUrl": "http://myapp.com",
"appId": "MyAppId"
}
现在在 AngularJS 代码中,我正在配置利用这些值的常量:
import * as environment from '../../environment.json';
console.log(environment.baseUrl); // http://myapp.com
angular.module('app')
.constant('environment', environment);
到目前为止,一切都很好。
问题是,现在如果我修改 dist/environment.json 中的值(注意这是在输出文件夹中),它不会更新值。例如,如果我将baseUrl 的值更改为http://myapp-dev.com,console.log 仍然会打印http://myapp.com。
这是我webpack.config.js中的相关代码:
规则
...
{
test: /\.json$/,
use: 'json-loader',
exclude: [/environment\.json$/]
},
...
插件
...
new CopyWebpackPlugin([{
from: 'environment.json'
},
...
上述代码成功地将environment.json 文件复制到输出文件夹,但输出文件夹中的其余代码并未使用它。无论出于何种原因,它似乎仍然与 webpack 耦合。
【问题讨论】:
-
Webpack 将在
dist中生成您需要的所有内容(它不会在运行时解析该文件),然后浏览器将加载这些文件,其 js 引擎将在其中执行逻辑。相反,最好询问如何在 js 文件中动态加载 json 配置并使用这些值。
标签: javascript angularjs webpack octopus-deploy