如何判断Angular 6 App是否处于Angular项目之外的生产模式

时间:2018-11-19 16:26:43

标签: angular google-analytics

我有一些不在Angular项目中的Google Analytics(分析)代码。如果环境是生产环境,我只想包含它。

我知道Angular项目中有一个环境变量 ,您可以在打字稿中引用这样的内容...

if (environment.production) {
  // do stuff
}

如果Angular之外有一些静态代码,那将无济于事。我曾尝试将Google Analytics(分析)代码放到Angular中,但似乎找不到范围,而打字稿不喜欢它。

现在,我拥有的最佳解决方案是手动检查可能不是最佳解决方案的主机名(这是在angular应用之外的index.html中)...

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-00000000-0"></script>
<script>
        if(location.hostname === "productionurl.com") {
                // insert google analytics tracking code
                window.dataLayer = window.dataLayer || [];
                function gtag(){dataLayer.push(arguments);}        
                gtag('js', new Date());        
                gtag('config', 'UA-000000000-0');
        }
</script>

我习惯于使用简单的web.config文件,但该项目改用angular config处理环境变量。

也许有一种方法可以从香草javascript中从“ getAllAngularRootElements()”之类的东西获取环境,但是我还没有找到一种方法。

2 个答案:

答案 0 :(得分:2)

对我来说,目前最干净的解决方案是使用第二个index.html文件,例如index.prod.html,并在构建过程中使用{{1}替换原来的文件。 } "fileReplacements"内的"production"环境配置中的}属性。

在这里检查:https://github.com/angular/angular-cli/wiki/stories-application-environments

答案 1 :(得分:0)

您是否尝试通过Angulartics(https://github.com/angulartics/angulartics)设置Google Analytics(分析)?我认为那应该可以解决您的问题。