From e1fc11cb5491a6f5be5c823140830672ea669a62 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Sun, 4 Oct 2026 10:51:53 +0500 Subject: [PATCH] fix: google analytics only on production --- .github/workflows/deploy.yml | 1 + docs/backlog.md | 5 ++--- docs/plan-seo.md | 7 ++++--- web/src/app.html | 14 -------------- web/src/routes/+layout.svelte | 11 +++++++++++ web/static/ga.js | 6 ++++++ web/vite.config.ts | 2 ++ 7 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 web/static/ga.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d95ccea..ac3b4bc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -50,6 +50,7 @@ jobs: run: pnpm build env: BASE_PATH: /easy-png-tools + PUBLIC_GA_ENABLED: "true" - name: Upload Pages artifact uses: actions/upload-pages-artifact@v3 diff --git a/docs/backlog.md b/docs/backlog.md index c48580a..9f281bf 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -127,9 +127,8 @@ - [ ] дистрибуция: закрепить репо, alternative.to, Product Hunt, Reddit/HN (S4c) - [ ] GSC: подключить домен, отправить sitemap, мониторинг индексации (S4a) - [ ] GA4: cookieless-конфигурация, отключить рекламные audiences и signals, - `anonymize_ip` — сейчас в `web/src/app.html` голый `gtag('config')` (S4b) -- [ ] GA4: отсечь попадания с локальных и preview-сборок — тег стоит в - prerender-оболочке и грузится на каждой странице, нужен флаг окружения + `anonymize_ip` — сейчас в `web/src/routes/+layout.svelte` голый + `gtag('config')` (S4b) ## Платформа (API/PWA) diff --git a/docs/plan-seo.md b/docs/plan-seo.md index 0467b5e..04565a1 100644 --- a/docs/plan-seo.md +++ b/docs/plan-seo.md @@ -280,9 +280,10 @@ мониторинг индексации и запросов. Бесплатно и обязательно. - [ ] **[S4b]** Довести GA4 до решения §0: cookieless-конфигурация, отключённые рекламные audiences и signals, `anonymize_ip`, запрет на передачу - параметров с данными картинки. Плюс отсечь мусорные попадания: - prerender-оболочка грузит тег и на локальных сборках, их нужно отсекать - флагом окружения. GA/ЯМ как замена счётчику не рассматриваем. + параметров с данными картинки. Мусорные попадания уже отсечены: тег + подключается только при `PUBLIC_GA_ENABLED=true` (выставлен в + deploy-workflow, `+layout.svelte`). GA/ЯМ как замена счётчику не + рассматриваем. - [ ] **[S4c]** Дистрибуция: закрепить GitHub-репо (README со скриншотами), подача на alternative.to (страница против конкурента), Product Hunt, тематические Reddit/HN-треды. Бэклинки — главный дефицит для конкуренции. diff --git a/web/src/app.html b/web/src/app.html index f7efb16..2ed93b2 100644 --- a/web/src/app.html +++ b/web/src/app.html @@ -4,20 +4,6 @@ - - - + + {/if}
diff --git a/web/static/ga.js b/web/static/ga.js new file mode 100644 index 0000000..38d4703 --- /dev/null +++ b/web/static/ga.js @@ -0,0 +1,6 @@ +window.dataLayer = window.dataLayer || []; +function gtag() { + window.dataLayer.push(arguments); +} +gtag("js", new Date()); +gtag("config", "G-MEQJ7JHRQQ"); diff --git a/web/vite.config.ts b/web/vite.config.ts index 51ea882..03daf8c 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -11,6 +11,8 @@ const base: "" | `/${string}` = : (`/${rawBase.replace(/^\/+/, "").replace(/\/+$/, "")}` as `/${string}`); export default defineConfig({ + // PUBLIC_* попадают в import.meta.env — флаги окружения вроде GA. + envPrefix: ["VITE_", "PUBLIC_"], ssr: { noExternal: ["@lucide/svelte"], },