我已经完成了几个解决方案,包括这里列出的解决方案:
我习惯使用类似gulp-replace-task
的内容来查找和更新应用的config
文件,以便用环境中设置的内容替换@@SERVER_URL
之类的内容。
这样我可以执行export SERVER_URL=something
或使用SERVER_URL=something gulp build
运行脚本来设置配置。
我尝试了以下所有方法:
transform-loader
加envify
这是第一个问题的建议,但由于以下原因对我不起作用:
Module build failed: Error: Parse Error: Line 1: Illegal import declaration
at throwError (ngapp/node_modules/esprima-fb/esprima.js:2823:21)
似乎esprima-fb
正在使用Webpack因某种原因无法使用的import
声明。 The project也不再被维护,所以这可能是走错路。
DefinePlugin
我添加了:
module: {plugins: [new webpack.DefinePlugin({"process.env.SERVER_URL": "something"})]}
这似乎被忽略了,或者至少process.env.SERVER_URL
没有在我的打字稿文件中进行插值。当我console.log(process.env)
时,它会发出一个空对象。
--define
为webpack设置我更新了我的npm
脚本:
"start": "webpack-dev-server --define process.env.SERVER_URL=${SERVER_URL}"
然而,这最终只会用文字process.env.SERVER_URL
替换我的代码中的"${SERVER_URL}"
,而不是在npm脚本中进行插值。
在使用Webpack构建的TypeScript应用程序中使用环境变量是否有简单/方便(或此时真正任何)的方式?
我的Webpack设置基本上是in the Angular docs列出的内容。