javascript - 如何在 gatsby-plugin-google-tagmanager 插件中传递多个 GTM 标签?
问题描述
我正在使用一个gatsby-plugin-google-tagmanager
插件来分析我的网站,但后来我从相同的代码库创建了另一个网站(根据特定路线区分其品牌),为此,我需要在我的插件中添加另一个 GTM 标签。现在我相信我不能在gatsby-config
文件中添加任何条件(如果我错了请纠正我),那么如何处理这种情况?我需要使用 gatsby-SSR 函数手动添加插入脚本还是有其他方法可以解决它?
{
resolve: "gatsby-plugin-google-tagmanager",
options: {
id: config.gtm,
includeInDevelopment: false,
defaultDataLayer: { platform: "gatsby" },
enableWebVitalsTracking: true,
},
},
我通过gtm
我的构建环境传递标签process.env
解决方案
您最好的机会是使用环境变量为每个文件使用不同的标识符。
如果每个项目触发不同的环境变量,您将能够在每个构建中使用不同的 GTM 实例。
添加后:
require("dotenv").config({
path: `.env.${process.env.GATSBY_ACTIVE_ENV}`,
})
您的脚本可能如下所示:
"scripts": {
"build-site-1": "GATSBY_ACTIVE_ENV=site1 gatsby build",
"build-site-2": "GATSBY_ACTIVE_ENV=site2 gatsby build",
},
然后,因为.env.${process.env.GATSBY_ACTIVE_ENV}
您可以在项目的根目录中定义一个.env.site1
and来定义每个 GTM 标识符:.env.site2
GTM_ID= 1234
最后,在你的gatsby-config.js
:
{
resolve: "gatsby-plugin-google-tagmanager",
options: {
id: process.env.GTM_ID,
includeInDevelopment: false,
defaultDataLayer: { platform: "gatsby" },
enableWebVitalsTracking: true,
},
},
将GTM_ID
是由 build 命令触发的,因此每个文件都将具有每个不可知的配置。
调整方法以适应您的规范,但要了解逻辑分离的概念。
推荐阅读
- node.js - Mongoose 查询比 shell 慢 8 倍
- haskell - 如何处理无限列表中的错误传播和截止条件?
- java - 使用 spring webflux 替代 @Cacheable
- gravity-forms-plugin - 重力形式上的自动选择单选按钮
- orientdb - 如何加载特定类型的顶点?
- javascript - 自动滑块滚动无法正常工作
- python - 是否可以在不需要生成新的 csv 文件的情况下操作 csv 中的数据?
- javascript - 推送到数组时文件对象变成字符串?JS
- java - Spring返回字符串但必须返回html
- c# - 使用 NEST 的 Elasticsearch 来搜索 CommonTerms - 缺少文档